如何在Java中迭代字符串?

Sha*_*oon 9 java string

public static Boolean cmprStr( String s1, String s2 )
{
    // STUFF
}
Run Code Online (Sandbox Code Playgroud)

我想遍历s1以确保s1中的每个字符都包含在s2中.

Vin*_*nie 11

  for(char c: s1.toCharArray()){
     if(s2.indexOf(c) == -1){
           return false;
     }
  }
  return true;
Run Code Online (Sandbox Code Playgroud)

假如说

  s1 = "aabb";
  s2 = "ccddaannbbss";
Run Code Online (Sandbox Code Playgroud)

将返回真实.

  • 我认为使用toCharArray迭代字符串将复制字符串.这可能不如简单的for循环有效. (3认同)

Ted*_*opp 11

public static Boolean cmprStr( String s1, String s2 )
{
    for (int i = s1.length() - 1; i >= 0; --i) {
         if (s2.indexOf(s1.charAt(i)) == -1) {
             return Boolean.FALSE;
         }
    }
    return Boolean.TRUE;
}
Run Code Online (Sandbox Code Playgroud)

  • @Jim - 我没看到作业标签.@sjr - 我知道.我看到你发布了一个O(n + m)解决方案.这是渐进式的,但我想知道在实践中它们需要多长时间才能更好.像你一样构建HashSet有很多开销. (4认同)

djn*_*jna 8

length()
Run Code Online (Sandbox Code Playgroud)

会给你一个字符串的长度

charAt( someIndex)
Run Code Online (Sandbox Code Playgroud)

将为您提供给定位置的字符,因此您可以迭代第一个String.

indexOf( achar )
Run Code Online (Sandbox Code Playgroud)

会给你一个字符串中的char的poisition,如果它不存在则为-1.因此,您应该能够在第二个字符串中查找第一个字符串中的每个字符.

  • +1 用于提供必要的作品而不是做功课。 (2认同)