簡體   English   中英

在Java的簡潔循環中包裝switch語句

[英]Wrapping a switch statement in a neat loop in Java

我有以下代碼,將2個字符串作為輸入,並根據它們是否為字謎返回Boolean:

import java.util.ArrayList;
import java.util.Scanner;

public class AnagramChecker {

    public static void main(String[] args) {
        Scanner sc = new Scanner (System.in);
        System.out.print ("Enter string 1: ");
        String str1 = sc.nextLine();
        System.out.print ("Enter string 2: ");
        String str2 = sc.nextLine();

        boolean check = isAnagram (str1, str2);
        System.out.println ("Anagram check for '" + str1 + "' and '" + str2 + "': " + check);
        sc.close();
    }
    public static boolean isAnagram (String s1, String s2) {
        if(s1.length() != s2.length())
            return false;
        s1 = s1.toLowerCase();
        s2 = s2.toLowerCase();
        ArrayList<String> myList = new ArrayList<String>();
        for(int i = 0; i < s2.length() ; i++ ){
            myList.add(String.valueOf(s2.charAt(i)));
        }
        for(int i = 0; i < s1.length();i++){
            for(int j = 0; j < myList.size(); j++){
                if(myList.get(j).equals(String.valueOf(s1.charAt(i)))){

                        myList.remove(j);
                        j = 0;
                        break;
                }
            }
        }
        return myList.isEmpty();
    }
}

但是,它在某種程度上受到限制,我正在嘗試將其擴展為適用於以下情況:-不同的情況,即eager == AGREE -帶有空格的單個詞,即eager == ag ree不同數量的空白,即" eager" == agree

有沒有一種很好的方法將其集成到上面已經編寫的代碼中,而又省卻很多麻煩。 任何幫助,不勝感激。 謝謝。

就在這里。 正則表達式可以解救! 您可以使用.replaceAll()中內置的String。 傳遞\\ s值將刪除所有未打印的空格和字符,例如\\ n。 我建議您在比較期間使用類似以下的內容:

string1.replaceAll("\\s","").equals(string2.replaceAll("\\s",""));

我個人將執行以下操作

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM