OnTheWay2012
埋葬昨天的我,迎來重生的我!
C++博客
首頁
新文章
新隨筆
聚合
管理
posts - 15, comments - 89, trackbacks - 0
反轉字符串
大家在面試的時候或者在網絡上經常會看到讓寫一個字符串反轉的函數的這種題。
以下是我自己寫的字符串反轉的函數,懇請各位指教。
char *Reverse_1(char *str)和char *Reverse_2(char *str) 實現的功能是把字符串反轉,例如把helloworld反轉為dlrowolleh。
char *Reverse_3(char *str)實現把this is a string反轉為string is a this的功能。
1
#include
<
iostream
>
2
#include
<
assert.h
>
3
4
using
namespace
std;
5
6
char
*
Reverse_1(
char
*
str)
7
{
8
assert(NULL
!=
str);
9
10
size_t size
=
strlen(str);
11
if
(NULL
!=
str
&&
1
<
size)
12
{
13
for
(size_t i
=
0
; i
<
size
/
2
; i
++
)
14
{
15
char
ch
=
str[i];
16
str[i]
=
str[size
-
i
-
1
];
17
str[size
-
i
-
1
]
=
ch;
18
}
19
}
20
21
return
str;
22
}
23
24
/**/
////////////////////////////////////////////////////////////////////////
//
25
26
char
*
Reverse_2(
char
*
str)
27
{
28
assert(NULL
!=
str);
29
30
char
*
res
=
str;
31
32
size_t size
=
strlen(str);
33
if
(NULL
!=
str
&&
1
<
size)
34
{
35
char
*
pEnd
=
str
+
size
-
1
;
36
37
if
(
0
==
size
%
2
)
38
{
39
do
40
{
41
char
ch
=
*
str;
42
*
str
=
*
pEnd;
43
*
pEnd
=
ch;
44
}
while
(
++
str
!=
pEnd
--
);
45
}
46
else
47
{
48
do
49
{
50
char
ch
=
*
str;
51
*
str
=
*
pEnd;
52
*
pEnd
=
ch;
53
}
while
(
++
str
!=
--
pEnd);
54
}
55
}
56
57
return
res;
58
}
59
60
/**/
////////////////////////////////////////////////////////////////////////
//
61
////////////////////////////////////////////////////////////////////////
//
62
63
char
*
Reverse_3_1(
char
*
str, size_t size)
64
{
65
assert(NULL
!=
str);
66
67
if
(NULL
!=
str
&&
1
<
size)
68
{
69
for
(size_t i
=
0
; i
<
size
/
2
; i
++
)
70
{
71
char
ch
=
str[i];
72
str[i]
=
str[size
-
i
-
1
];
73
str[size
-
i
-
1
]
=
ch;
74
}
75
}
76
77
return
str;
78
}
79
80
char
*
Reverse_3(
char
*
str)
81
{
82
assert(NULL
!=
str);
83
84
char
*
res
=
str;
85
if
(NULL
!=
str
&&
NULL
!=
strchr(str,
'
'
))
//
這里的strchr是為了防止出現bug(例如:abc被修改為cba)
86
{
87
str
=
Reverse_3_1(str, strlen(str));
88
while
(
true
)
89
{
90
char
*
pSubStr
=
strchr(str,
'
'
);
91
if
(NULL
==
pSubStr)
92
{
93
Reverse_3_1(str, strlen(str));
94
break
;
95
}
96
else
97
{
98
Reverse_3_1(str, pSubStr
-
str);
99
str
=
pSubStr
+
1
;
100
}
101
}
102
}
103
104
return
res;
105
}
106
107
void
main()
108
{
109
/**/
/*
110
以下代碼用來測試Reverse_1和Reverse_2
111
char chArr1[] = "";
112
cout<<Reverse_2(chArr1)<<endl;
113
114
char chArr2[] = "HelloWorld";
115
cout<<Reverse_2(chArr2)<<endl;
116
117
char chArr3[] = "Hello World";
118
cout<<Reverse_2(chArr3)<<endl;
119
120
char chArr4[] = "JiShuGe";
121
cout<<Reverse_2(chArr4)<<endl;
122
123
char chArr5[] = "OuShuGee";
124
cout<<Reverse_2(chArr5)<<endl;
125
126
char chArr6[] = "ab";
127
cout<<Reverse_2(chArr6)<<endl;
128
129
char chArr7[] = "abc";
130
cout<<Reverse_2(chArr7)<<endl;
131
*/
132
133
char
chArr1[]
=
""
;
134
cout
<<
Reverse_3(chArr1)
<<
endl;
135
136
char
chArr2[]
=
"
HelloWorld
"
;
137
cout
<<
Reverse_3(chArr2)
<<
endl;
138
139
char
chArr3[]
=
"
Hello World
"
;
140
cout
<<
Reverse_3(chArr3)
<<
endl;
141
142
char
chArr4[]
=
"
Ji Shu Ge
"
;
143
cout
<<
Reverse_3(chArr4)
<<
endl;
144
145
char
chArr5[]
=
"
This is a string
"
;
146
cout
<<
Reverse_3(chArr5)
<<
endl;
147
148
char
chArr6[]
=
"
HelloWorld
"
;
149
cout
<<
Reverse_3(chArr6)
<<
endl;
150
151
char
chArr7[]
=
"
HelloWorld
"
;
152
cout
<<
Reverse_3(chArr7)
<<
endl;
153
154
char
chArr8[]
=
"
Hello World
"
;
155
cout
<<
Reverse_3(chArr8)
<<
endl;
156
157
char
chArr9[]
=
"
He llo Wor ld
"
;
158
cout
<<
Reverse_3(chArr9)
<<
endl;
159
}
posted on 2010-05-08 17:21
OnTheWay
閱讀(371)
評論(1)
編輯
收藏
引用
所屬分類:
算法
FeedBack:
#
re: 反轉字符串
2010-05-08 17:45 |
小時候可靚了
就這樣一點點寫下去,就會很厲害。。。中間不要間斷
回復
更多評論
刷新評論列表
只有注冊用戶
登錄
后才能發表評論。
【推薦】100%開源!大型工業跨平臺軟件C++源碼提供,建模,組態!
相關文章:
給定一個字符串,求其所有可能組合
寫了兩個函數(1)把一個unsigned int 轉換成字符型的IP(2)鏈表插入元素,升序
反轉字符串
網站導航:
博客園
IT新聞
BlogJava
博問
Chat2DB
管理
<
2010年3月
>
日
一
二
三
四
五
六
28
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
1
2
3
4
5
6
7
8
9
10
常用鏈接
我的隨筆
我的評論
我參與的隨筆
留言簿
(4)
給我留言
查看公開留言
查看私人留言
隨筆分類
C、C++(2)
操作系統(Windows、Linux、Unix)
讀書筆記
個人感悟(4)
面經 (4)
軟件設計(1)
數據庫
算法(3)
線程、進程
英語
雜項
轉載
隨筆檔案
2011年1月 (1)
2010年12月 (2)
2010年11月 (1)
2010年6月 (1)
2010年5月 (6)
2010年4月 (1)
2010年3月 (3)
友情連接
搜索
最新評論
1.?re: 對“隨筆”所寫的一篇文章《鏈表實驗》的一點看法
評論內容較長,點擊標題查看
--陳梓瀚(vczh)
2.?re: 對“隨筆”所寫的一篇文章《鏈表實驗》的一點看法
謝謝咯,呵呵。我喜歡這代碼風格,向你學習
--あ維wêiセ
3.?re: 一種基于引用計數機制的智能指針實現
把A *p = new A();這句換成A p;不行嗎?
--叫我老王吧
4.?re: 一種基于引用計數機制的智能指針實現
Boost 里面有,在C++ TR1 里面也已經有這種指針(就是來自Boost)
--Phuehvk
5.?re: 一種基于引用計數機制的智能指針實現[未登錄]
比較討厭這種引用計數指針的使用,一旦使用就意味這在所有的函數參數中必須使用指針引用或者值拷貝,一旦某些函數要求用裸指針,就可能引發問題。
--hdqqq
閱讀排行榜
1.?一道面試題(求一個unsigned int 數的二進制表示中有多少個1?)(6173)
2.?一種線程安全的單例模式實現方式(5759)
3.?一種基于引用計數機制的智能指針實現(2933)
4.?不要把類的外衣脫下來,讓類的美麗消失于無形(2792)
5.?幾道面試題,有的做出來了,有的不會做,請大家指教(2631)
評論排行榜
1.?一道面試題(求一個unsigned int 數的二進制表示中有多少個1?)(15)
2.?一種線程安全的單例模式實現方式(15)
3.?幾道面試題,有的做出來了,有的不會做,請大家指教(14)
4.?令人氣憤的現象(13)
5.?不要把類的外衣脫下來,讓類的美麗消失于無形(9)
Copyright ©2025 OnTheWay Powered By
博客園
模板提供:
滬江博客
欧美精品一区二区精品久久
|
久久久WWW成人免费毛片
|
日本欧美国产精品第一页久久
|
国产AV影片久久久久久
|
无码精品久久一区二区三区
|
波多野结衣AV无码久久一区
|
国产精品久久久久久
|
久久强奷乱码老熟女网站
|
国内精品人妻无码久久久影院导航
|
久久青草国产精品一区
|
精品久久综合1区2区3区激情
|
国产欧美久久久精品影院
|
97久久久久人妻精品专区
|
亚洲精品无码成人片久久
|
久久精品国产久精国产
|
久久精品国产亚洲AV影院
|
日韩一区二区久久久久久
|
97久久婷婷五月综合色d啪蜜芽
|
久久国产精品成人免费
|
久久亚洲精品成人AV
|
香蕉aa三级久久毛片
|
亚洲成色999久久网站
|
无码人妻少妇久久中文字幕蜜桃
|
久久久一本精品99久久精品88
|
久久久久一级精品亚洲国产成人综合AV区
|
日韩精品久久久肉伦网站
|
伊人久久五月天
|
欧美久久久久久
|
香蕉久久永久视频
|
亚洲精品成人久久久
|
色综合久久88色综合天天
|
精品久久久久久无码人妻蜜桃
|
亚洲一本综合久久
|
免费国产99久久久香蕉
|
久久久久久狠狠丁香
|
亚洲国产精品久久久久
|
久久亚洲国产欧洲精品一
|
国产精品天天影视久久综合网
|
97超级碰碰碰久久久久
|
久久综合丁香激情久久
|
久久AⅤ人妻少妇嫩草影院
|