日期:2014-05-20 浏览次数:20717 次
public class Ansewer28 { public static void main(String[] args) { // TODO Auto-generated method stub String str1 = "00000001111111000101010100001110"; String str2 = "10001001111111000101010100001110"; char[] ch1 = str1.toCharArray(); char[] ch2 = str2.toCharArray(); char[] temp = new char[str1.length()]; for (int i = 0; i < str1.length(); i++) { temp[i] = (ch1[i] == ch2[i]) ? '1' : '0'; } System.out.println(new String(temp)); } }
------解决方案--------------------
转化成十进制在与或然后在转回去
------解决方案--------------------
觉得2楼的可以,不过不知道你所谓的效率是要多高
------解决方案--------------------
一次遍历就完了,还有更高效的?
------解决方案--------------------
可以试试String.parseInt方法 将其装换成int类型 然后进行操作
------解决方案--------------------
用StringBuilder,一个个地append就行了。
public class Xor { public static void main(String[] args) { String str1 = "00000001111111000101010100001110"; String str2 = "10001001111111000101010100001110"; StringBuilder xor = new StringBuilder(); for(int i = 0; i < str1.length(); i++) { char ch1 = str1.charAt(i); char ch2 = str2.charAt(i); xor.append((ch1 == ch2) ? 0 : 1 ); } System.out.println(xor.toString()); } }
------解决方案--------------------
没什么好办法,只能一个一个的比较
------解决方案--------------------
不知能否用String类中的compareTo方法直接比较?
------解决方案--------------------
不清楚楼主到底要的是或运算还是与运算,你说的是或运算,可是你表达的却是与运算,其实不管哪种运算,你都需要比较的,无非是比较的次数多少而已。
但是看清楚两种运算的本质,就会很简单了,或运算,有1才变1,与运算,遇0则为0.
所以代码如下:
public class Test { public static void main(String[] args) { String str1 = "00000001111111000101010100001110"; String str2 = "10001001111111000101010100001110"; char[] ch1 = str1.toCharArray(); char[] ch2 = str2.toCharArray(); for (int i = 0; i < str1.length(); i++) { //或运算 if(ch1[i] != '0') ch2[i] = ch1[i]; //与运算 if(ch1[i] == '0') ch2[i] = ch1[i]; } System.out.println(new String(ch2)); } }