-----------------字串的比對問題------------------ 想請問一下 我怎麼去判斷一個字串的比對問題, 當順序不一樣時? 像是 String str1 = "abc"; String str2 = "bac"; 這2個字串, 我不管他們的排列順利為何, 要怎麼去判斷他們兩個是一樣的?? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 此回复为自动发出,仅用于显示而已,并无任何其他特殊作用楼主【ydsakyclguozi】截止到2008-06-23 14:38:40的历史汇总数据(不包括此帖):发帖数:25 发帖分:1005 结贴数:25 结贴分:1005 未结数:0 未结分:0 结贴率:100.00% 结分率:100.00% 敬礼! 按照每个字符排序成一个新的字符串,然后在用.equals比较,如果一致就是一致,否则就是不一致 package com.test.all;import java.util.HashMap;import java.util.Map;public class OneDataStructure { private Map<Character, Integer> charMap = new HashMap<Character, Integer>(); public OneDataStructure(String str) { if (null != str) { char[] chars = str.toCharArray(); // 记录下出现的字符和次数 for (char c : chars) { if (charMap.containsKey(c)) { charMap.put(c, charMap.get(c) + 1); } else { charMap.put(c, 1); } } } } public Map<Character, Integer> getCharMap() { return charMap; } public boolean isTheSameTo(OneDataStructure another) { Map<Character, Integer> anotherMap = another.getCharMap(); if (charMap.size() != anotherMap.size()) { return false; } else { for (Character c : charMap.keySet()) { if (charMap.get(c) != anotherMap.get(c)) return false; } return true; } } public static void main(String[] args) { String str1 = "abc"; String str2 = "bac"; System.out.println(new OneDataStructure(str1) .isTheSameTo(new OneDataStructure(str2))); }} 我也来一个boolean compareString(String s1, String s2) { if(s1.length()!=s2.length()) return false; List<Character> lista=new ArrayList<Character>(); List<Character> listb=new ArrayList<Character>(); for(int i=0;i<s1.length();i++){ lista.add(s1.charAt(i)); listb.add(s2.charAt(i)); } Collections.sort(lista); Collections.sort(listb); for(int i=0;i<lista.size();i++){ if(!lista.get(i).equals(listb.get(i))) return false; } return true; } 一个思路 把string先转换成一个char数组Stirng.toCharArray();问题就变成 了比较两个char数组元素是否相等的问题 。先判断 长度相等if(char1.length==char2.length)然后循环判断数组1的元素是否在数组2里面,在的话就都删除(以免遇到相同字符再次比较)for(int i=0;i<char1.length;i++){ for(int j=0;j<char2.length;j++){ if(char1[i]==char2[j]) //删除操作 else{ //如果比较完都没有发现相同的,就返回,说明不同,如果全部比较完成,说明相同。 } }} public String cpare(String a1,String a2) { char []newa1=a1.toCharArray(); char []newa2=a2.toCharArray(); int flag=0; for(int i=0;i<newa1.length;i++) { for(int j=0;j<newa2.length;j++) { if(newa2[j]==newa1[i]) { flag=1; continue; }else { flag=0; } } } if(flag==1 && newa1.length==newa2.length) { return "相同"; }else{ return "不相同"; } } List<Character> lista=new ArrayList<Character>();List<Character>,这个<Character>啥意思? 在java JDK1.5之前是没有泛型的,怨不得呢,我从开始就用的是1.4 用regex怎样能实现这个功能? 请专家评价一下等差数列相关算法效率问题 看java多线程和定时器,有些疑惑,望朋友们指教,谢谢。 请问怎么获取本局域网的子网掩码呀? 为什么SWING控件无法在已正常加载的情况下正常显示 字符转字符串是如何转换的 Mac下JAVA运行报错 请问用DBuitls框架插入数据显示错误怎么解决 jdbc 驱动数据库方面的问题,欢迎高手献技 各位高手,谁替我解释一下“this” 面板切换问题---急,在线等!!! 江湖救急-为了一棵树-找叶子
楼主【ydsakyclguozi】截止到2008-06-23 14:38:40的历史汇总数据(不包括此帖):
发帖数:25 发帖分:1005
结贴数:25 结贴分:1005
未结数:0 未结分:0
结贴率:100.00% 结分率:100.00%
敬礼!
import java.util.Map;public class OneDataStructure { private Map<Character, Integer> charMap = new HashMap<Character, Integer>(); public OneDataStructure(String str) {
if (null != str) {
char[] chars = str.toCharArray();
// 记录下出现的字符和次数
for (char c : chars) {
if (charMap.containsKey(c)) {
charMap.put(c, charMap.get(c) + 1);
} else {
charMap.put(c, 1);
}
}
}
} public Map<Character, Integer> getCharMap() {
return charMap;
} public boolean isTheSameTo(OneDataStructure another) {
Map<Character, Integer> anotherMap = another.getCharMap();
if (charMap.size() != anotherMap.size()) {
return false;
} else {
for (Character c : charMap.keySet()) {
if (charMap.get(c) != anotherMap.get(c))
return false;
}
return true;
}
} public static void main(String[] args) {
String str1 = "abc";
String str2 = "bac";
System.out.println(new OneDataStructure(str1)
.isTheSameTo(new OneDataStructure(str2)));
}
}
boolean compareString(String s1, String s2) {
if(s1.length()!=s2.length())
return false;
List<Character> lista=new ArrayList<Character>();
List<Character> listb=new ArrayList<Character>();
for(int i=0;i<s1.length();i++){
lista.add(s1.charAt(i));
listb.add(s2.charAt(i));
}
Collections.sort(lista);
Collections.sort(listb);
for(int i=0;i<lista.size();i++){
if(!lista.get(i).equals(listb.get(i)))
return false;
}
return true;
}
把string先转换成一个char数组
Stirng.toCharArray();
问题就变成 了比较两个char数组元素是否相等的问题 。
先判断 长度相等
if(char1.length==char2.length)
然后循环判断数组1的元素是否在数组2里面,在的话就都删除(以免遇到相同字符再次比较)
for(int i=0;i<char1.length;i++){
for(int j=0;j<char2.length;j++){
if(char1[i]==char2[j])
//删除操作
else{
//如果比较完都没有发现相同的,就返回,说明不同,如果全部比较完成,说明相同。
}
}
}
{
char []newa1=a1.toCharArray();
char []newa2=a2.toCharArray();
int flag=0;
for(int i=0;i<newa1.length;i++)
{
for(int j=0;j<newa2.length;j++)
{
if(newa2[j]==newa1[i])
{
flag=1;
continue;
}else
{
flag=0;
}
}
}
if(flag==1 && newa1.length==newa2.length)
{
return "相同";
}else{
return "不相同";
}
}
List<Character>,这个<Character>啥意思?