我有两个字符串:
public partial class Form1 : Form
{
private Queue<Face> faces= new Queue<Face>();
public Form1()
{
InitializeComponent();
int x = 20;
int y = 70;
int lenght= 5;
int height= 5;
int diameter = 20;
face = new Face (x, y, lenght, height, diameter);
faces.Enqueue(face);
}
protected override void OnMouseClick(MouseEventArgs e)
{
Invalidate();
}
protected override void OnPaint(PaintEventArgs e)
{
Graphics g = e.Graphics;
face.DrawFace(g);
face.DrawLeftEye(g);
face.DrawRightEye(g);
Invalidate();
}
}
首先逐字符比较字符串字符并打印索引或列号。如果字符不同。我需要在字符串中包含空格。
与上面的字符串一样:
s1和s2的指数差异:34到48。
我试过以下:
String s1 = "D3516025204 StackOverflow is good.";
String s2 = "D3516025204 StackOverflow Nice to see you.";
答案 0 :(得分:0)
试试这个。
String s1 = "D3516025204 StackOverflow is good.";
String s2 = "D3516025204 StackOverflow Nice to see you.";
if(s1.length() > s2.length()){
for(int i=0; i< s1.length() - s2.length(); i++)
s2+=" ";
}else{
for(int i=0; i< s2.length() - s1.length(); i++)
s1+=" ";
}
char[] c1 = s1.toCharArray();
char[] c2 = s2.toCharArray();
System.out.print("Difference is: ");
for(int i=0; i<c1.length; i++){
if(c1[i]!=c2[i]){
System.out.print(i+", ");
}
}
答案 1 :(得分:0)
class CrazySolution {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String line = br.readLine();
String line1 = br.readLine();
//process()
int lenofLine = line.length();
int lenofLine1 = line1.length();
int finalLen = Math.min(lenofLine, lenofLine1);
for (int i = 0; i < finalLen; i++) {
if (line.charAt(i) != line1.charAt(i))
{
System.out.println(i);
break;
}
}
System.out.println(lenofLine == lenofLine1 ? -1 : finalLen);
}
}
试试这个..
答案 2 :(得分:0)
看看apache.commons.lang3.StringUtils或这个post
使用StringUtils.difference(String first,String second)你的代码看起来像这样
public static void main(String[] args) {
String s1 = "D3516025204 StackOverflow is good.";
String s2 = "D3516025204 StackOverflow Nice to see you.";
String s = StringUtils.difference( s1, s2);
int at = StringUtils.indexOfDifference(s1, s2);
System.out.println(at + "-" + s2.length());
System.out.println(s);
}
答案 3 :(得分:0)
String text1 = "D8516025209 StackOverflow is good.";
String text2 = "D3516025204 StackOverflow Nice to see you.";
int minimum = Math.min(text1.length(), text2.length());
int maximum = Math.max(text1.length(), text2.length());
StringBuilder stringBuilder = new StringBuilder("Difference of indices from s1 and s2: ");
StringBuilder text1Diff = new StringBuilder();
StringBuilder text2Diff = new StringBuilder();
int index = 0;
while (index < minimum)
{
if (text1.charAt(index) != text2.charAt(index))
{
stringBuilder.append(stringBuilder.length() > 0 ? ", " : "").append(index + 1).append(" - ");
text1Diff.append(text1Diff.length() > 0 ? ", " : "");
text2Diff.append(text2Diff.length() > 0 ? ", " : "");
while ((index < minimum) && (text1.charAt(index) != text2.charAt(index)))
{
text1Diff.append(text1.charAt(index));
text2Diff.append(text2.charAt(index));
index++;
}
if (index == minimum)
{
stringBuilder.append(maximum);
index = maximum;
if (maximum == text1.length())
text1Diff.append(text1.substring(minimum));
else
text2Diff.append(text2.substring(minimum));
}
else
stringBuilder.append(index);
}
index++;
}
if (minimum != maximum && index < maximum)
{
stringBuilder.append(stringBuilder.length() > 0 ? ", " : "").append(minimum + 1).append(" - ").append(maximum);
if (maximum == text1.length())
text1Diff.append(text1.substring(minimum));
else
text2Diff.append(text2.substring(minimum));
}
System.out.println(stringBuilder.toString());
System.out.println("Differences: ");
System.out.println(text1Diff.toString());
System.out.println(text2Diff.toString());