字符串取反问题
问题:将字符串取反。
例如,“abcd” ---> "dcba"
这⾥的思想取⾃合并排序。下⾯的源码存在⼀个问题。⽬前我还没有解决掉,欢迎⼤家指导!! 1/*
2 * Q: 将字符串取反。例如,
3 * “abcd” --> "dcba"
4*/
5 #include <iostream>
6 #include <cstring>
7
8using namespace std;
9
10void Merge(char *str, int start, int mid, int end)
11 {
12int lenleft = mid - start + 1;
13int lenright = end - mid;
14char *pleft = new char[lenleft + 1];
15
16    strncpy(pleft, str + start -1, lenleft);
17    strncpy(str + start - 1, str + mid, lenright);
18    strncpy(str + start + lenright - 1, pleft, lenleft);
19
20    delete[] pleft;
21 }
22
23/*
24 * 有⼀个BUG:需要在最后的时候加⼀个空格!
25 * 因为在转换过程中,删掉了最后⼀个字符。
26*/
27void MergeString(char *str, int start, int end)
28 {
29if (start < end) {
30int mid = (start + end) / 2;
31
32        MergeString(str, start, mid);
33        MergeString(str, mid + 1, end);
34        Merge(str, start, mid, end);
35//      cout << str << endl;
36    }
37 }
cstring转为int
38
39int main()
40 {
41char str[] = "abcd ";
42
43    cout << "Before: \n" << str << endl;
44
45    cout << "\nin service: \n";
46    MergeString(str, 0, strlen(str));
47
48    cout << "\nAfter: \n" << str << endl;
49
50return1;
51 }

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。