aboutsummaryrefslogtreecommitdiff
path: root/challenge-074/paulo-custodio/python/ch-2.py
diff options
context:
space:
mode:
authorMohammad Sajid Anwar <Mohammad.Anwar@yahoo.com>2024-09-25 09:29:21 +0100
committerGitHub <noreply@github.com>2024-09-25 09:29:21 +0100
commit261da1d2c54ab8faab88537076b4248d5abd00f7 (patch)
treec60a0327997c7d9759f275323ae120d735726784 /challenge-074/paulo-custodio/python/ch-2.py
parent9e56f497ae79225e5a6e041a963741885335d0d0 (diff)
parent206c2fce8db1de9b7f82f04a3276005a284b3c40 (diff)
downloadperlweeklychallenge-club-261da1d2c54ab8faab88537076b4248d5abd00f7.tar.gz
perlweeklychallenge-club-261da1d2c54ab8faab88537076b4248d5abd00f7.tar.bz2
perlweeklychallenge-club-261da1d2c54ab8faab88537076b4248d5abd00f7.zip
Merge pull request #10906 from pauloscustodio/master
Add Python solutions
Diffstat (limited to 'challenge-074/paulo-custodio/python/ch-2.py')
-rw-r--r--challenge-074/paulo-custodio/python/ch-2.py54
1 files changed, 54 insertions, 0 deletions
diff --git a/challenge-074/paulo-custodio/python/ch-2.py b/challenge-074/paulo-custodio/python/ch-2.py
new file mode 100644
index 0000000000..131c393c0e
--- /dev/null
+++ b/challenge-074/paulo-custodio/python/ch-2.py
@@ -0,0 +1,54 @@
+#!/usr/bin/env python3
+
+# Challenge 074
+#
+# TASK #2 > FNR Character
+# Submitted by: Mohammad S Anwar
+# You are given a string $S.
+#
+# Write a script to print the series of first non-repeating character (left
+# -> right) for the given string. Print # if none found.
+#
+# Example 1
+# Input: $S = 'ababc'
+# Output: 'abb#c'
+# Pass 1: "a", the FNR character is 'a'
+# Pass 2: "ab", the FNR character is 'b'
+# Pass 3: "aba", the FNR character is 'b'
+# Pass 4: "abab", no FNR found, hence '#'
+# Pass 5: "ababc" the FNR character is 'c'
+#
+# Example 2
+# Input: $S = 'xyzzyx'
+# Output: 'xyzyx#'
+# Pass 1: "x", the FNR character is "x"
+# Pass 2: "xy", the FNR character is "y"
+# Pass 3: "xyz", the FNR character is "z"
+# Pass 4: "xyzz", the FNR character is "y"
+# Pass 5: "xyzzy", the FNR character is "x"
+# Pass 6: "xyzzyx", no FNR found, hence '#'
+
+import sys
+
+def lnr_char(s):
+ out = ""
+ seen = {}
+ for i in range(len(s)):
+ ch = s[i]
+ if ch in seen:
+ seen[ch] += 1
+ else:
+ seen[ch] = 1
+ found = False
+ for j in range(i+1)[::-1]:
+ ch = s[j]
+ if ch in seen and seen[ch] == 1:
+ out += ch
+ found = True
+ break
+ if not found:
+ out += "#"
+ return out
+
+s = sys.argv[1]
+print(lnr_char(s))