如何在C编程中使用字符串字符数组编写排列方法,同时将每个字符映射到整数?例如,我有10个整数的排列:
1,0,2,3,5,4,6,9,8,7 - 不一定按顺序
和一个包含少于400个字符的字符。我将它们都存储到2个独立的数组中,但是如何将每个整数映射到每个字符?在映射它们之后,我将如何编写排列方法?
两个阵列的大小都不相同。置换数组有10个值,char数组少于400个字符,但我只是初始化为:char text [400];每个数组的大小都不会移动。
更好的解释:
我在想,如果我有10个整数(0 - 9)和下面的排列 - 每个排列不能有相同的数字:
0,1,2,3,4,5,6,7,8,9 - 原始
1,0,3,6,7,4,5,9,2,8 - 排列
Apple,bee - 10个字符的文本,包括空格和逗号
所以通过应用上面的排列,我会得到类似的东西:
' pAl,epe'
如果您使用该排列的反转,您将得到Apple,bee'试。
原始索引[0]是' A'在Apple中应该是 - 并且通过排列,它可以通过' p'因为1指数...等等。
那我该如何实现呢?换句话说,我如何将排列映射到每个字符并让它切换位置?我还没有学过结构。
答案 0 :(得分:1)
第一种情况:
只需要在数组之间建立隐式链接。
Array[int] --> Array[string]
1 --> "toto" Array[0]
0 --> "titi" Array[1]
2 --> "tutu" Array[2]
...
然后,如果你想要置换两个元素,你可以移动字符串指针
第二种情况:
你想在你的数组之间建立一个真正的链接,所以我建议你做一个结构:
struct example
{
int ArrayInt[10];
char *ArrayPointer[10];
};
其中ArrayPointer将包含位于字符串数组中的字符串的地址。
示例:
STRUCTURE
Array[int] Array[char *] ArrayString
0 &ArrayString[1] "toto"
1 &ArrayString[0] "titi"
2 &ArrayString[2] "tutu"
数字0用“titi”
映射带有“toto”的数字1
第2号“tutu”
要进行排列,只需更改结构中的指针
即可可以吗?