fork download
  1. /* package whatever; // don't place package name! */
  2.  
  3. import java.util.*;
  4. import java.lang.*;
  5. import java.io.*;
  6.  
  7. /* Name of the class has to be "Main" only if the class is public. */
  8. class Ideone
  9. {
  10. public static void main (String[] args) throws java.lang.Exception
  11. {
  12. Scanner sc = new Scanner(System.in);
  13. sc.nextInt();
  14. sc.nextLine();
  15. String data = sc.nextLine();
  16. int q = sc.nextInt();
  17. int[][] queries = new int[q][3];
  18. for(int i=0; i<q; i++){
  19. queries[i][0] = sc.nextInt();
  20. queries[i][1] = sc.nextInt();
  21. queries[i][2] = sc.nextInt();
  22. }
  23.  
  24. System.out.println(findDistinctCharacters(data, queries));
  25. }
  26. private static List<Integer> findDistinctCharacters(String data, int[][]queries){
  27. List<Integer> ans = new ArrayList<>();
  28. StringBuilder s = new StringBuilder(data);
  29. for(int[] query: queries){
  30. if(query[0] ==1){
  31. char rep = (char) ('a' + query[2] - 1);
  32. s.setCharAt(query[1]-1, rep);
  33. }
  34. if(query[0]==2){
  35. int distinct = countDistinct(s, query[1], query[2]);
  36. ans.add(distinct);
  37. }
  38. }
  39. return ans;
  40. }
  41. private static int countDistinct(StringBuilder s, int l, int r){
  42. HashSet<Character> set = new HashSet<>();
  43. l=l-1;
  44. r= r-1;
  45. while(l<s.length() && l<=r){
  46. // char curr = s.charAt(l++);
  47. // if(!set.contains(curr)){
  48. // distinct++;
  49. // set.add(curr);
  50. // }
  51. set.add(s.charAt(l++));
  52. }
  53. return set.size();
  54. }
  55. }
Success #stdin #stdout 0.14s 56788KB
stdin
7
abccbda
5
2 3 6
1 2 3
2 2 4
1 1 5
2 1 7
stdout
[3, 1, 5]