2011-06-02 158 views
5

我有兩個包含數字的字符串,我想查看第二個字符串是否包含與第一個字符串相同的數字,無論它們是否按順序排列。如果它有任何重複的報告而不是報告。反正java中除了使用.charAt()之外,因爲它不適用於10之後的數字嗎?在java中比較兩個字符串

String one = "1 2 3 4 5 "; 
String two = " 3 2 1 4 5 "; 
String three = "3 2 1 4 4 "; 

回答

7

看起來像作業。所以,你可以按照下列步驟操作:

  • Trim兩個字符串
  • Convert兩個字符串到ArrayList中使用空格分隔符
  • Sort兩個陣列數字
  • Compare兩個數組
+1

它不是它的最後一年的項目,我正在重新練習。 – 2011-06-02 10:26:10

+3

@sibghatuk - 同樣的原則適用。如果我們給你提示,並且你爲自己找出完整的答案,你會**更多**。那就是你想要做的......不是嗎? – 2011-06-02 10:33:52

-1

嘗試解析int中的字符串。

Integer.parseInt(One).intValue() == Integer.parseInt(two).intValue() 

我不知道你在做什麼,但我的猜測是你最好使用數組。

+1

不能從空格的字符串解析爲int - 你會得到一個'NumberFormatException' – Bohemian 2011-06-02 10:30:25

0

您可以根據空格對字符串進行標記化/拆分,然後遍歷所得到的令牌,這些令牌本身就是數字。

4

您可以使用Scanner.nextInt()從字符串中讀取數字,將它們添加到Set,並查看set1.equals(set2)是否爲真。

0

你分割字符串在空白處(使用String.splitStringTokenizer),然後將其中的每一個e令牌成爲一個數字。把所有的數字在字符串1中放入一個HashSet。對字符串2做同樣的事情。現在,您只需檢查第一個HashSet中的每個條目是否也出現在第二個條目中。

+0

MAK - OP提到重複的可能性。這意味着您的解決方案不會總是有效。 – 2011-06-02 10:36:11

+0

@Stephen C:的確如此。但他可以隨時檢查重複,而插入集。這個問題看起來像家庭作業,所以我不想放棄太多。 – MAK 2011-06-02 17:57:50

2

我不會對原始字符串進行比較。相反,首先將每個String轉換爲List<Integer>,每個結果使用String.split()Integer.parseInt()。然後將sort()列表按升序排列,然後將它們進行比較變得非常容易。

2

試試這個。

String one = "1 2 3 4 5 "; 
String two = " 3 2 1 4 5 "; 
Set<String> a = new HashSet<String> (Arrays.asList(one.trim().replaceAll("\\s*"," ").split(" "))); 
Set<String> b = new HashSet<String> (Arrays.asList(two.trim().replaceAll("\\s*"," ").split(" "))); 
boolean ret = (a.size() == b.size()) && a.containsAll(b); 
0

我將在第一個數作爲整數分析,把它們設定並加以比較:

import java.util.SortedSet; 
import java.util.StringTokenizer; 
import java.util.TreeSet; 


public class StringsCompare { 

    private static String one = "1 2 3 4 5 6"; 
    private static String two = " 3 2 1 5 6 4 "; 

    public static void main(String[] args) { 
     StringsCompare sc = new StringsCompare(); 

     System.out.println(sc.compare(one, two)); 
    } 

    private boolean compare(String one, String two) { 

     SortedSet<Integer> setOne = getSet(one);  
     SortedSet<Integer> setTwo = getSet(two); 

     return setOne.equals(setTwo); 
    } 

    private SortedSet<Integer> getSet(String str) { 
     SortedSet<Integer> result = new TreeSet<Integer>(); 

     StringTokenizer st = new StringTokenizer(str, " "); 

     while (st.hasMoreTokens()) { 
      result.add(Integer.valueOf(st.nextToken())); 
     } 

     return result; 
    } 
}