回答
只是一個指針,可以優化代碼:
public static void main(String[] args) {
String str = "The picture quality is great of this camera";
StringTokenizer st = new StringTokenizer(str);
int numberOfWords = 0;
boolean start = false;
while(st.hasMoreTokens()){
String token = st.nextToken();
if(token.equals("quality")){
start = true;
continue;
}
if(start) {
if(token.equals("great")){
start = false;
}
else {
numberOfWords++;
}
}
}
System.out.println(numberOfWords);
}
Downvote!明智足以留下評論? – NINCOMPOOP 2013-04-25 05:33:08
我沒有downvote你,但我想這是因爲你沒有顯示任何參數化,並通過標記整個字符串使用過於複雜的方法。 – 2013-04-25 07:50:40
@Noob它的工作原理和感謝你這麼多 – 2013-04-26 07:21:31
- 也許從String.split(...)開始獲取所有單詞的數組。
- 然後你可以搜索數組中的兩個單詞。你知道這兩個詞的索引,你可以確定距離。
這裏是我的解決方案:
public static void main(String[] args) {
String input = "The picture quality is great of this camera";
// happy flows
System.out.println(findDistance(input, "quality", "great"));
System.out.println(findDistance(input, "picture", "of"));
// words in reversed order
System.out.println(findDistance(input, "camera", "great"));
// non occurring words
try {
System.out.println(findDistance(input, "picture", "camcorder"));
}
catch(IllegalArgumentException e) {
System.out.println("Expected exception caught, message was: " + e.getMessage());
}
}
private static int findDistance(String input, String word1, String word2) {
// check input
if (input == null) {
throw new IllegalArgumentException("Input cannot be null");
}
if (word1 == null || word2 == null) {
throw new IllegalArgumentException("Two words should be provided");
}
// determine boundaries
int pos1 = input.indexOf(word1);
int pos2 = input.indexOf(word2);
// check boundaries
if (pos1 < 0 || pos2 < 0) {
throw new IllegalArgumentException("Both words should occur in the input");
}
// swap boundaries if necessary to allow words in reversed order
if (pos1 > pos2) {
int tmp = pos1;
pos1 = pos2;
pos2 = tmp;
}
// obtain the range between the boundaries, including the first word
String range = input.substring(pos1, pos2);
// split the range on whitespace
// minus one to not count the first word
return range.split("\\s").length - 1;
}
有一個愉快的一天(其卓越的畫質)!
爲什麼你使用一個數組參數,當你期望正好兩個單詞? – 2013-04-25 08:11:46
@Jacob你讀我的思想,只是改變( - : – 2013-04-25 08:16:24
- 1. 找到兩個特定單詞之間的字符串
- 2. 兩個詞之間的語義距離
- 3. 如何找出C#中兩個單元格之間的距離?
- 4. java.lang.StringIndexOutOfBoundsException:兩個字符串之間的編輯距離是一個
- 5. 如何測量Java中兩個單詞之間的距離?
- 6. 提取字符向量中兩個特定單詞之間的所有單詞
- 7. 找到兩個字符之間的距離
- 8. 如何找到兩個特定字符串之間的數字?
- 9. 用於計算兩個字符串之間距離的算法
- 10. 計算兩個字符串之間的levenshtein距離
- 11. 確定數組中兩個特定元素之間的距離?
- 12. 距離之間的兩個
- 13. 兩個單詞之間的最小距離(python)
- 14. 幾何:找到兩點之間的特定距離
- 15. 獲取unix中兩個特定字符之間的字符串
- 16. C,如何找到一個字符串中的2個重複單詞,並計算它們之間的距離
- 17. 獲取包含在兩個特定單詞之間的子字符串
- 18. 單詞之間的詳細距離
- 19. 查找曼哈頓距離中兩組之間的距離
- 20. 在c中的兩個單詞之間提取字符串#
- 21. 刪除unix中兩個單詞之間的字符串
- 22. 在KornShell中選擇兩個單詞之間的字符串
- 23. PHP:在字符串中的特定單詞之後提取特定單詞?
- 24. 查找兩條線之間的距離
- 25. php - 如何在字符串中的兩個單詞之間插入單詞?
- 26. C從兩個單詞之間的字符串中提取單詞
- 27. 查找字符串中特定單詞字符的索引號
- 28. 找出距離和兩個座標之間的路線
- 29. 在兩個特定字符串之間輸出n行文本
- 30. 查找字符串中間的字符距離
System.out.println(「1」); – Osiris 2013-04-25 05:19:43
@Osiris哈哈,但沒有道理。歐普舉了一個例子來澄清問題。在這種情況下,你有點迂腐( - : – 2013-04-25 07:43:41
因爲它的功能就像一個家庭作業(我假設它是這樣的),它是求代碼而不是問,它也沒有顯示研究成果 – 2013-04-25 08:12:33