| 
 | 
 
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册  
 
x
 
- Given a string S, return the number of substrings that have only one distinct letter.
 
  
-  
 
  
- Example 1:
 
  
- Input: S = "aaaba"
 
 - Output: 8
 
 - Explanation: The substrings with one distinct letter are "aaa", "aa", "a", "b".
 
 - "aaa" occurs 1 time.
 
 - "aa" occurs 2 times.
 
 - "a" occurs 4 times.
 
 - "b" occurs 1 time.
 
 - So the answer is 1 + 2 + 4 + 1 = 8.
 
 - Example 2:
 
  
- Input: S = "aaaaaaaaaa"
 
 - Output: 55
 
 -  
 
  
- Constraints:
 
  
- 1 <= S.length <= 1000
 
 - S[i] consists of only lowercase English letters.
 
  复制代码 
- class Solution {
 
 -     public int countLetters(String S) {
 
 -         if (S.length() == 0) return 0;
 
 -         if (S.length() == 1) return 1;
 
 -         int sum = 0;
 
 -         String remain = "";
 
 -         Set <String> set = new HashSet<>();
 
 -         String init = S.substring(0,1);
 
 -         set.add(init);
 
 -         for(int i = 0; i< S.length(); i++){
 
 -             
 
 -             if(S.substring(i,i+1).equals(init)) {
 
 -                 
 
 -                 remain = remain + S.substring(i,i+1);
 
 -                 set.add(remain + S.substring(i,i+1));
 
 -             }
 
 -             else {
 
 -                 remain = "";
 
 -                 init = S.substring(i,i+1);
 
 -                 
 
 -                 set.add(init);
 
 -             }
 
 -         }
 
 -         Iterator<String> iterator = set.iterator();
 
 -         while(iterator.hasNext()) {
 
 -             sum = sum + compare(S,iterator.next());
 
 -         }
 
 -         
 
 -         return sum;
 
 -     }
 
 -     
 
 -     public int compare(String S, String s){
 
 -         int sum = 0;
 
 -         for(int i = 0; i<= S.length() - s.length(); i++){
 
 -             if(S.substring(i,i+s.length()).equals(s)) sum ++;
 
 -             
 
 -         }
 
 -         return sum;
 
 -     }
 
 - }
 
  复制代码 |   
 
 
 
 |