diff options
| author | Mohammad Sajid Anwar <Mohammad.Anwar@yahoo.com> | 2024-09-25 09:29:21 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-09-25 09:29:21 +0100 |
| commit | 261da1d2c54ab8faab88537076b4248d5abd00f7 (patch) | |
| tree | c60a0327997c7d9759f275323ae120d735726784 /challenge-074/paulo-custodio/python/ch-2.py | |
| parent | 9e56f497ae79225e5a6e041a963741885335d0d0 (diff) | |
| parent | 206c2fce8db1de9b7f82f04a3276005a284b3c40 (diff) | |
| download | perlweeklychallenge-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.py | 54 |
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)) |
