2014-02-05 53 views
0

任何人都可以建議我爲此寫入邏輯而不使用集合。使用集合重複字符串中的單詞

我有一個字符串s =「這是所謂的島嶼,它是一個不錯的地方」;

輸入查找重複單詞的字符串是:「is」;

輸出應該是:4

+0

我覺得正則表達式是不是所有的字符串操作的最佳途徑。檢查我的帖子下面的正則表達式。 –

回答

2

你可以按照下面的邏輯來做到這一點。

  1. 將字符串拆分爲空白。
  2. 通過得到的各陣列的元件和用於陣列的每個字符串元素初始化的整數計數器爲0。
  3. 遍歷,執行以下操作:
    a)如果stringElement.contains("is"),增量在步驟2中創建的計數器
    b)如果!stringElement.contains("is"),什麼也不做,並轉向下一個元素。
  4. 這樣做,直到你耗盡陣列的所有元素。
  5. 打印計數器值。

試着自己寫這個代碼,如果你在任何地方卡住,回到這裏。

+1

該函數應該是'String.contains(String)',否則「this」中的「is」將不會被識別。 –

+0

@SteveBenett - 感謝您的糾正!我在答案中做了必要的編輯:) – SudoRahul

0
string s="This is the place called island and it is a nice place "; 
s = s+" "; 
System.out.println(s.split("is").length-1); 
+0

那樣會在字符串上失敗,如「陰莖」;) –

+0

所以在它之前或之後添加一個空格 – leigero

+0

@KamilMikolajczyk已更新.. – Kick

0

就這麼簡單

int count = 0; 
for (int startIndex = 0; startIndex >= 0; startIndex = str.indexOf("is", startIndex)) { 
    count++; 
} 
0

使用下面的方法,它應該工作:

public static int countSubStrings(String subString, String mainString){ 
    return (mainString.length() - mainString.replace(subString, "").length())/subString.length(); 
} 
0

您可以使用此。希望你正在使用Java。

public static void main(String[] args) { 
String str = "This is the place called island and it is a nice place"; 
    Pattern pattern = Pattern.compile("is"); 
    Matcher matcher = pattern.matcher(str); 

    int count = 0; 
    while (matcher.find()) 
     count++; 

    System.out.println(count); // prints 4 
} 
0

這種方法計算如果您使用的是Java時間S2多少出現在S1

public static int CountStr(String s1,String s2){ 
     int cnt=0,temp=0; 
     if(s1.indexOf(s2)>0){ 
      temp=s1.indexOf(s2); 
      cnt++; 
     } 
     while(s1.indexOf(s2,temp+1)>0){ 
      cnt++; 
      temp=s1.indexOf(s2,temp+1); 
     } 
     return cnt; 
    } 
相關問題