本文给出几个判断两个字符串是否互为变形词的方法。
方法一 : 借助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. **反转法**:将字符串分为两部分,一部分是前半部分,另一部分是从中心开始到末尾的后半部分。如果这两部分通过反转后相等,则字符串是中心对称的。例如,...
Labview-比较两个字符串,显示相同字符个数
题目中给出的标签“判断子串”提示我们,我们需要编写一个程序或函数,接受两个字符串作为输入,并返回一个布尔值,表示第二个字符串是否为第一个字符串的子串。 在编程中,有多种方法可以实现这个功能。以下是一些...
在标准的字符串方法中,没有直接提供一个功能可以获取两个已知字符串之间的子串,但我们可以通过结合几个基本方法来实现这个功能。 1. **IndexOf**:此方法用于查找指定字符串在当前字符串中的第一次出现位置。...
使用指针来判断两个字符串是否相等 cout请分别输入两个字符串str1和str2:"; cin.getline(str1,100); cin.getline(str2,100);
用汇编语言编写的程序,用来判断两个字符串是否想等,如果相等,显示match,不相等,显示no match。。
这里定义的`contains`方法接受两个参数:`search`代表要搜索的子字符串,`start`代表开始搜索的位置,默认为0。 接下来,`contains`方法内部实现上使用了`indexOf`方法来查找子字符串的位置。如果找到了子字符串(`...
js 实现 判断两个字符串日期的大小! 值得下载看看!资源免费,大家分享!!
用途:可用于论文抄袭检测、DNA等。...算法实现思路:通过对一个字符串插入、删除、替换转变成另一个字符串所需要的步骤称为距离,计算两个字符串之间的距离,从而可以得到两个字符串之间的相似度。
字符串相似度是评估两个字符串之间相似程度的一种度量。在很多情况下,我们不关心字符串是否完全相同,而是关注它们之间的相似性。例如,拼写检查、自动补全、模糊搜索等功能就利用了字符串相似度的计算。 最短编辑...
在Java中,有多种方法可以用来比较两个字符串是否相等: 1. **使用 `equals` 方法:** - 这是最常用的比较两个字符串是否相等的方法。 - 示例中的代码使用了 `s.equals(s2)` 来比较用户输入的字符串 `s` 是否与预...
在C#编程语言中,判断一个字符是否存在于字符串或数组中是常见的操作,这在处理文本数据时尤其重要。下面我们将详细探讨如何实现这个功能,以及相关的重要知识点。 首先,我们要知道C#提供了多种方法来检查字符是否...
为了方便使用,可以创建一个分类来扩展`NSString`,添加一个便捷的方法来判断字符串是否为空: ```objc @interface NSString (Utils) - (BOOL)isEmptyOrNil; @end @implementation NSString (Utils) - (BOOL)...
本文实例讲述了C++实现判断一个字符串是否为UTF8或GBK格式的方法。分享给大家供大家参考,具体如下: 在处理外部数据的时候,很可能因为数据格式不一样而导致乱码,甚至导致某些程序挂掉。鉴于对多数系统来说,使用...
#### 方法一:判断第一个字符是否为汉字 这种方法通过检查字符串的第一个字符来判断其是否为中文。具体实现步骤如下: 1. **提取第一个字符**:首先,我们需要从待检测的字符串中提取出第一个字符。这里使用了`Mid...
判断一个字符串是否是中心对称 C++描述
在编程领域,判断一个字符串或字符串中的一个字符是否为数字类型是常见的操作,尤其是在处理用户输入、数据分析或者格式验证时。下面将详细讲解几种不同语言中实现这一功能的方法,以及如何确保判断的安全性和效率。...
- 通过比较每个字符的ASCII值来判断两个字符串的大小关系。如果遇到不匹配的情况,则立即输出比较结果并终止循环。 - 如果所有字符都匹配且达到字符串末尾(即遇到`\0`),则输出“str1=str2”。 4. **异常情况...