本文给出几个判断两个字符串是否互为变形词的方法。
方法一 : 借助Arrays工具类实现
import java.util.Arrays; public class AnagramCheck { public boolean isAnagram(String s1, String s2) { if (s1 == null || s2 == null || s1.length() != s2.length()) { return false; } char[] ch1 = s1.toCharArray(); char[] ch2 = s2.toCharArray(); Arrays.sort(ch1); Arrays.sort(ch2); return Arrays.equals(ch1, ch2); } }
当然,方法一并不是最快的方法,但是在绝大部分情况下已经足够好了。
方法二 : 使用String的indexOf方法判断
在该方法中,从头开始判断各个字符是否存在于对方的字符串中,只要有一个不存在,则返回false。
public class AnagramCheck { public boolean isAnagram(String s1, String s2) { if (s1 == null || s2 == null || s1.length() != s2.length()) { return false; } int i = 0; int j = 0; //不需要判断t j< s2.length()因为s1 和 s2的长度是一样的 while (i < s1.length()) { if (s1.indexOf(s2.charAt(j)) < 0 || s2.indexOf(s1.charAt(i)) < 0) return false; i++; j++; } return true; }//O(n log n) }
方法三 : 适用于8位字符集的检测方法
该方法适合只包含8位字符集的字符串,不适合包含中文的字符串比较。
public class AnagramCheck { public boolean isAnagram(String s1, String s2) { if (s1 == null || s2 == null || s1.length() != s2.length()) { return false; } /* 假设是8位字符集 */ int[] counts = new int[256]; int len = s1.length(); for (int index = 0; index < len; index++) { if((int) s1.charAt(index) > 0 && (int) s2.charAt(index) > 0){ counts[(int) s1.charAt(index)]++; counts[(int) s2.charAt(index)]--; } } for (int index = 0; index < len; index++) if (counts[index] > 0) return false; return true; } }
原文地址 http://thecodesample.com/?p=864
更多的例子请访问 http://thecodesample.com/
相关推荐
在JavaScript中判断两个字符串是否相等是编程基础中的重要内容,尤其对于初学者来说,理解字符串相等性的判断方法对于编写有效的代码至关重要。首先,要了解JavaScript提供了两种相等性运算符:“==”和“===”。这...
自己编的java判断一个字符串是否对称的,忘指导。判断一个字符串是否是对称字符串(方法改进) (一个一个比较) 例如"abc"不是对称字符串,"aba"、"abba"、"aaa"、"mnanm"是对称字符串
中心对称字符串的判断通常可以通过以下几种方法实现: 1. **反转法**:将字符串分为两部分,一部分是前半部分,另一部分是从中心开始到末尾的后半部分。如果这两部分通过反转后相等,则字符串是中心对称的。例如,...
### ES6 中 JavaScript 判断一个字符串是否存在另一个字符串中的方法 在 JavaScript 的开发过程中,经常会遇到需要判断一个字符串是否存在于另一个字符串中的场景。ES6(ECMAScript 2015)作为 JavaScript 的一个...
Labview-比较两个字符串,显示相同字符个数
在标准的字符串方法中,没有直接提供一个功能可以获取两个已知字符串之间的子串,但我们可以通过结合几个基本方法来实现这个功能。 1. **IndexOf**:此方法用于查找指定字符串在当前字符串中的第一次出现位置。...
使用指针来判断两个字符串是否相等 cout请分别输入两个字符串str1和str2:"; cin.getline(str1,100); cin.getline(str2,100);
这里定义的`contains`方法接受两个参数:`search`代表要搜索的子字符串,`start`代表开始搜索的位置,默认为0。 接下来,`contains`方法内部实现上使用了`indexOf`方法来查找子字符串的位置。如果找到了子字符串(`...
本文实例讲述了C++实现判断一个字符串是否为UTF8或GBK格式的方法。分享给大家供大家参考,具体如下: 在处理外部数据的时候,很可能因为数据格式不一样而导致乱码,甚至导致某些程序挂掉。鉴于对多数系统来说,使用...
在Java中,有多种方法可以用来比较两个字符串是否相等: 1. **使用 `equals` 方法:** - 这是最常用的比较两个字符串是否相等的方法。 - 示例中的代码使用了 `s.equals(s2)` 来比较用户输入的字符串 `s` 是否与预...
在C#编程语言中,判断一个字符是否存在于字符串或数组中是常见的操作,这在处理文本数据时尤其重要。下面我们将详细探讨如何实现这个功能,以及相关的重要知识点。 首先,我们要知道C#提供了多种方法来检查字符是否...
为了方便使用,可以创建一个分类来扩展`NSString`,添加一个便捷的方法来判断字符串是否为空: ```objc @interface NSString (Utils) - (BOOL)isEmptyOrNil; @end @implementation NSString (Utils) - (BOOL)...
`strcmp`函数是C语言标准库中的一个函数,用于比较两个字符串的大小。在这个问题中,我们需要设计一个名为`strcmp(s, t)`的算法,它能实现与C语言标准库中的`strcmp`相同的功能。下面将详细讨论字符串比较的基本概念...
在编程领域,判断一个字符串或字符串中的一个字符是否为数字类型是常见的操作,尤其是在处理用户输入、数据分析或者格式验证时。下面将详细讲解几种不同语言中实现这一功能的方法,以及如何确保判断的安全性和效率。...
- 通过比较每个字符的ASCII值来判断两个字符串的大小关系。如果遇到不匹配的情况,则立即输出比较结果并终止循环。 - 如果所有字符都匹配且达到字符串末尾(即遇到`\0`),则输出“str1=str2”。 4. **异常情况...
判断字符串是否为空 var strings = ''; if (string.length == 0) { alert('不能为空'); } 判断字符串是否为“空”字符即用户输入了空格 var strings = ' '; if (strings.replace(/(^s*)|(s*$)/g, )....
3. 翻转字符串:为了判断字符串是否为回文,一种常见方法是将原字符串翻转,然后与原字符串进行比较。如果两者相同,则字符串是回文。 4. 比较并输出结果:将翻转后的字符串与原字符串比较,如果它们相等,则输出...
3. **简化判断逻辑**:可以使用更简洁的方法来判断回文,例如反转字符串后比较。 4. **注释与文档**:增加代码注释,提高可读性。 通过以上分析可以看出,该代码片段提供了一个简单的回文判断算法实现,同时也展示...