diff --git a/Sagato_distinct b/Sagato_distinct new file mode 100644 index 0000000..fd2275d --- /dev/null +++ b/Sagato_distinct @@ -0,0 +1,31 @@ +import java.util.*; +class distict +{ + public static void main(String args[]) + { + Scanner sc=new Scanner(System.in); + String s = sc.nextLine(); + Solution ob = new Solution(); + System.out.println(ob.distinctSubsequences(s)); + } + } + +class Solution { + int distinctSubsequences(String S) { + HashMap map = new HashMap<>(); + int mod = 1000000007; + int n = S.length(); + int[] dp = new int[n + 1]; + dp[0] = 1; + + for (int i = 1; i <= n; i++) + { + dp[i] = (2 * dp[i - 1])%mod; + char curr = S.charAt(i - 1); + if (map.containsKey(curr)) + dp[i] = (dp[i] - dp[map.get(curr)-1] + mod) % mod; + map.put(curr, i); + } + return dp[n]; + } +}