C++ 存储字符信息的二维整数数组
有两个字符串,我需要比较它们是否不同,如果它们不同,我需要标记它们的索引。 第一个字符串是:“bundle”,第二个字符串是“double”,所以我需要做(b,d)=索引0(u,o)=1。我得到了一段使用二维整数数组的代码,但是整数数组如何存储这些信息。在代码的后面,有一个从char a到z的循环。那么它们是如何比较的呢C++ 存储字符信息的二维整数数组,c++,arrays,string,C++,Arrays,String,有两个字符串,我需要比较它们是否不同,如果它们不同,我需要标记它们的索引。 第一个字符串是:“bundle”,第二个字符串是“double”,所以我需要做(b,d)=索引0(u,o)=1。我得到了一段使用二维整数数组的代码,但是整数数组如何存储这些信息。在代码的后面,有一个从char a到z的循环。那么它们是如何比较的呢 // for (i='a';i<='z';i++) for (j=i+1;j<='z';j++) if (x
// for (i='a';i<='z';i++)
for (j=i+1;j<='z';j++)
if (x[i][j] && x[j][i])// how x[i][j] is used here with char//
// main code begins here
int x[256][256],n,i,j,ans,k;
string a,b;
main()
{
cin>>n;
cin>>a>>b;
for (i=0;i<n;i++)
{
if (a[i] != b[i])
{
x[a[i]][b[i]]=i+1;// but a[i] and b[j] are characters and x is 2-d int array
ans++;
}
}
for (i='a';i<='z';i++)
for (j=i+1;j<='z';j++)
if (x[i][j] && x[j][i])
{
cout<<ans-2<<endl;
cout<<x[i][j]<<" "<<x[j][i]<<endl;
return 0;
}
for (i='a';i<='z';i++)
for (j='a';j<='z';j++)
for (k='a';k<='z';k++)
if (x[i][j] && x[j][k])
{
cout<<ans-1<<endl;
cout<<x[i][j]<<" "<<x[j][k]<<endl;
return 0;
}
//for(i='a';in;
cin>>a>>b;
对于(i=0;它看起来有很多代码可以处理。即使你不能使用std::mismatch
本身,它的实现应该让你知道如何实现查找字符串差异的位置更容易。mismatch并不重要,但我们如何在二维数组int中存储a[i]和b[j],而a[i]和b[i]是char@BartvanNieropAchar
只不过是一些一个字节的数据4字节。将char
分配给int
只需将int
的最高有效字节设置为0x00
,将其最低有效字节设置为char
具有的任何值。请注意,这稍微简化,因为它没有考虑符号位。数组X将存储X(b,d)或X吗(98100)?@BartvanNierop'b'==98
和'd'==100
。它们在内存中是相同的东西,只是在文本编辑器和输出函数中表示不同。试试它:printf(“%c%c”,100,'d”);
那么你的问题的答案是它存储了X('b','d')还是X(98,100)是的,它存储了。