日期:2014-05-20 浏览次数:20975 次
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));
}
}