【问题标题】:Anagram Program to Compare two Strings比较两个字符串的 Anagram 程序
【发布时间】:2016-02-20 16:33:18
【问题描述】:

我正在创建一个比较两个字符串的字谜程序,但不确定如何创建一个布尔值,如果两个单词中都出现一个字符,则返回 true。

我的代码如下:

StringBuffer strbuff1 = new StringBuffer(""); 

private StringBuffer strbuff2 = new StringBuffer(""); 

public Anagram (String s1, String s2) {

    s1 = strbuff1.toString();
    s2 = strbuff2.toString();

     } 

public boolean contains(char chart1) {
        return true;        //what do I put here? 
    }

}

【问题讨论】:

标签: java string character stringbuffer anagram


【解决方案1】:

所以你应该可以使用 StringBuffer 方法 indexOf。请在此处查看 api 文档:http://docs.oracle.com/javase/7/docs/api/java/lang/StringBuffer.html#indexOf(java.lang.String)

类似:

public boolean contains(char chart1) {
    if(strbuff1.indexOf(chart1) >= 0 && strbuff2.indexOf(chart1) >= 0) {
       return true;  
    }
    return false;      
}

不过,我也认为你的构造函数的变量赋值可能是倒退的。

你可能想要strbuff1 = new StringBuffer(s1);

这将使用给定 String 对象的内容创建一个新的 StringBuffer。

祝你好运!

*已编辑以包括对两个单词的检查。

【讨论】:

  • 只有当字符包含在两个单词中时,该方法才应该返回true
  • 已编辑以包含此场景。我在原始帖子中错过了该要求是我的错误。
  • 谢谢。另外,我走这条路是因为 StringBuffer 没有 contains() 方法。原来的海报似乎受到了限制。
  • 好点。我误读了那部分代码。投赞成票!
【解决方案2】:

这应该可以满足您的需要

public boolean contains(char chart1) {
    return stringOne.contains(Character.toString(chart1)) &&
        stringTwo.contains(Character.toString(chart1));
}

如果提供的字符包含在两个字符串中,则返回 true,否则返回 false

【讨论】:

    猜你喜欢
    • 2017-07-18
    • 2019-08-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多