java - 如何用charAt()和length()写一个是否为子串的方法

标签 java string

我想写一个boolean方法subString()来判断字符串s1是否是s2的子串>.

要求只是使用 charAt() length() 方法 字符串

例如

 Substring("abc","abcd")-> true

 Substring("at","cat")->true

 Substring("ac","abcd")->false

indexOf() 不能使用。

这是我到目前为止得到的结果。

public class Q3 {
    public boolean subString(String str1, String str2) {
        String s1 = str1.toLowerCase();
        String s2 = str2.toLowerCase();
        for (i = 0; i < s1.length; i++) {
            for (j = 0; j < s2.length; j++) {
                if (s1.charAt(i) == s2.charAt(j))
                    return true;
            }
        }
        return false;
    }
}

测试类是:

public class Q3test {
    public static void main (String arg[]){
        Q3 Q3object = new Q3();
        System.out.println(Q3object.Substring("ac","abcd"));
    }
}

subString("ac","abcd") 失败,因为它返回 true。

最佳答案

如果第一个字符匹配,您的代码将返回 true。您需要第一个字符串的所有字符都包含在第二个字符串的子字符串中。

编辑:

我的原始代码是错误的。这是正确的代码:

        public static boolean subString(String str1, String str2)
        {
          String s1 = str1.toLowerCase();
          String s2 = str2.toLowerCase();
          for (int offset = 0; offset <= s2.length() - s1.length(); offset++) {
            int i = 0;
            for (; i < s1.length(); i++){
              if(s1.charAt(i) != s2.charAt(i+offset)) {
                break;
              }
            }
            // found a substring that starts at the current offset
            if (i == s1.length())
              return true;
          }
          return false;
        }

关于java - 如何用charAt()和length()写一个是否为子串的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30827309/

相关文章:

java - 如何关闭 maven pom.xml 某些部分的 Eclipse 代码格式化程序

java - JAVA 中的 MySQLSyntaxErrorException

java - 我的应用程序出现一些错误

python - 使用Python,当输入字符串为aaabbcddddd时,如何将输出字符串打印为-> aaa3bb2c1ddddd5

string - 如何在 Python 3 字符串上使用 memoryview?

javascript - 如何覆盖 String 的长度属性

java - mysql for java中的语句

java - MedianCalc() 方法给我 IndexOutOfBounds 异常

Java:将子字符串替换为 <b>substring</b> 不区分大小写

java - 为什么 Java 的 `String.toCharArray()` 和 `new String(char[])` 方法不接受字符集编码?