本文给出几个判断两个字符串是否互为变形词的方法。
方法一 : 借助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。。
js 实现 判断两个字符串日期的大小! 值得下载看看!资源免费,大家分享!!
用途:可用于论文抄袭检测、DNA等。...算法实现思路:通过对一个字符串插入、删除、替换转变成另一个字符串所需要的步骤称为距离,计算两个字符串之间的距离,从而可以得到两个字符串之间的相似度。
字符串相似度是评估两个字符串之间相似程度的一种度量。在很多情况下,我们不关心字符串是否完全相同,而是关注它们之间的相似性。例如,拼写检查、自动补全、模糊搜索等功能就利用了字符串相似度的计算。 最短编辑...
在Java中,有多种方法可以用来比较两个字符串是否相等: 1. **使用 `equals` 方法:** - 这是最常用的比较两个字符串是否相等的方法。 - 示例中的代码使用了 `s.equals(s2)` 来比较用户输入的字符串 `s` 是否与预...
为了方便使用,可以创建一个分类来扩展`NSString`,添加一个便捷的方法来判断字符串是否为空: ```objc @interface NSString (Utils) - (BOOL)isEmptyOrNil; @end @implementation NSString (Utils) - (BOOL)...
本文实例讲述了C++实现判断一个字符串是否为UTF8或GBK格式的方法。分享给大家供大家参考,具体如下: 在处理外部数据的时候,很可能因为数据格式不一样而导致乱码,甚至导致某些程序挂掉。鉴于对多数系统来说,使用...
#### 方法一:判断第一个字符是否为汉字 这种方法通过检查字符串的第一个字符来判断其是否为中文。具体实现步骤如下: 1. **提取第一个字符**:首先,我们需要从待检测的字符串中提取出第一个字符。这里使用了`Mid...
判断一个字符串是否是中心对称 C++描述
- 通过比较每个字符的ASCII值来判断两个字符串的大小关系。如果遇到不匹配的情况,则立即输出比较结果并终止循环。 - 如果所有字符都匹配且达到字符串末尾(即遇到`\0`),则输出“str1=str2”。 4. **异常情况...
判断字符串是否为空 var strings = ''; if (string.length == 0) { alert('不能为空'); } 判断字符串是否为“空”字符即用户输入了空格 var strings = ' '; if (strings.replace(/(^s*)|(s*$)/g, )....
Levenshtein算法,也称为编辑距离算法,就是用于衡量两个字符串之间差异程度的一种方法。本文将深入探讨如何使用Delphi编程语言来实现这一算法,并分析其原理和应用。 Levenshtein算法的核心思想是通过计算将一个...
有时我们需要判断一个字符串是否代表一个有效的数字,这样的功能可以应用于多种场景,比如数据验证、数值计算等。本文将基于提供的Delphi源代码来解析如何实现这一功能。 #### 二、Delphi 语言简介 Delphi 是一种...