OnTheWay2012
埋葬昨天的我,迎來(lái)重生的我!
C++博客
首頁(yè)
新文章
新隨筆
聚合
管理
posts - 15, comments - 89, trackbacks - 0
反轉(zhuǎn)字符串
大家在面試的時(shí)候或者在網(wǎng)絡(luò)上經(jīng)常會(huì)看到讓寫(xiě)一個(gè)字符串反轉(zhuǎn)的函數(shù)的這種題。
以下是我自己寫(xiě)的字符串反轉(zhuǎn)的函數(shù),懇請(qǐng)各位指教。
char *Reverse_1(char *str)和char *Reverse_2(char *str) 實(shí)現(xiàn)的功能是把字符串反轉(zhuǎn),例如把helloworld反轉(zhuǎn)為dlrowolleh。
char *Reverse_3(char *str)實(shí)現(xiàn)把this is a string反轉(zhuǎn)為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是為了防止出現(xiàn)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
以下代碼用來(lái)測(cè)試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
閱讀(364)
評(píng)論(1)
編輯
收藏
引用
所屬分類(lèi):
算法
FeedBack:
#
re: 反轉(zhuǎn)字符串
2010-05-08 17:45 |
小時(shí)候可靚了
就這樣一點(diǎn)點(diǎn)寫(xiě)下去,就會(huì)很厲害。。。中間不要間斷
回復(fù)
更多評(píng)論
刷新評(píng)論列表
只有注冊(cè)用戶(hù)
登錄
后才能發(fā)表評(píng)論。
【推薦】100%開(kāi)源!大型工業(yè)跨平臺(tái)軟件C++源碼提供,建模,組態(tài)!
相關(guān)文章:
給定一個(gè)字符串,求其所有可能組合
寫(xiě)了兩個(gè)函數(shù)(1)把一個(gè)unsigned int 轉(zhuǎn)換成字符型的IP(2)鏈表插入元素,升序
反轉(zhuǎn)字符串
網(wǎng)站導(dǎo)航:
博客園
IT新聞
BlogJava
博問(wèn)
Chat2DB
管理
<
2010年5月
>
日
一
二
三
四
五
六
25
26
27
28
29
30
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
常用鏈接
我的隨筆
我的評(píng)論
我參與的隨筆
留言簿
(4)
給我留言
查看公開(kāi)留言
查看私人留言
隨筆分類(lèi)
C、C++(2)
操作系統(tǒng)(Windows、Linux、Unix)
讀書(shū)筆記
個(gè)人感悟(4)
面經(jīng) (4)
軟件設(shè)計(jì)(1)
數(shù)據(jù)庫(kù)
算法(3)
線程、進(jìn)程
英語(yǔ)
雜項(xiàng)
轉(zhuǎn)載
隨筆檔案
2011年1月 (1)
2010年12月 (2)
2010年11月 (1)
2010年6月 (1)
2010年5月 (6)
2010年4月 (1)
2010年3月 (3)
友情連接
搜索
最新評(píng)論
1.?re: 對(duì)“隨筆”所寫(xiě)的一篇文章《鏈表實(shí)驗(yàn)》的一點(diǎn)看法
評(píng)論內(nèi)容較長(zhǎng),點(diǎn)擊標(biāo)題查看
--陳梓瀚(vczh)
2.?re: 對(duì)“隨筆”所寫(xiě)的一篇文章《鏈表實(shí)驗(yàn)》的一點(diǎn)看法
謝謝咯,呵呵。我喜歡這代碼風(fēng)格,向你學(xué)習(xí)
--あ維wêiセ
3.?re: 一種基于引用計(jì)數(shù)機(jī)制的智能指針實(shí)現(xiàn)
把A *p = new A();這句換成A p;不行嗎?
--叫我老王吧
4.?re: 一種基于引用計(jì)數(shù)機(jī)制的智能指針實(shí)現(xiàn)
Boost 里面有,在C++ TR1 里面也已經(jīng)有這種指針(就是來(lái)自Boost)
--Phuehvk
5.?re: 一種基于引用計(jì)數(shù)機(jī)制的智能指針實(shí)現(xiàn)[未登錄](méi)
比較討厭這種引用計(jì)數(shù)指針的使用,一旦使用就意味這在所有的函數(shù)參數(shù)中必須使用指針引用或者值拷貝,一旦某些函數(shù)要求用裸指針,就可能引發(fā)問(wèn)題。
--hdqqq
閱讀排行榜
1.?一道面試題(求一個(gè)unsigned int 數(shù)的二進(jìn)制表示中有多少個(gè)1?)(6159)
2.?一種線程安全的單例模式實(shí)現(xiàn)方式(5748)
3.?一種基于引用計(jì)數(shù)機(jī)制的智能指針實(shí)現(xiàn)(2918)
4.?不要把類(lèi)的外衣脫下來(lái),讓類(lèi)的美麗消失于無(wú)形(2781)
5.?幾道面試題,有的做出來(lái)了,有的不會(huì)做,請(qǐng)大家指教(2618)
評(píng)論排行榜
1.?一道面試題(求一個(gè)unsigned int 數(shù)的二進(jìn)制表示中有多少個(gè)1?)(15)
2.?一種線程安全的單例模式實(shí)現(xiàn)方式(15)
3.?幾道面試題,有的做出來(lái)了,有的不會(huì)做,請(qǐng)大家指教(14)
4.?令人氣憤的現(xiàn)象(13)
5.?不要把類(lèi)的外衣脫下來(lái),讓類(lèi)的美麗消失于無(wú)形(9)
Copyright ©2025 OnTheWay Powered By
博客園
模板提供:
滬江博客
久久不见久久见免费视频7
|
久久ww精品w免费人成
|
99久久精品毛片免费播放
|
亚洲а∨天堂久久精品
|
国内精品久久久久久久coent
|
久久国产免费
|
久久精品国产久精国产
|
精品久久人妻av中文字幕
|
狠狠色丁香久久婷婷综合蜜芽五月
|
精品久久久久久无码人妻蜜桃
|
久久综合丁香激情久久
|
久久免费视频网站
|
免费观看久久精彩视频
|
国产精品一久久香蕉国产线看
|
2021久久精品国产99国产精品
|
青青草原精品99久久精品66
|
色综合久久久久综合体桃花网
|
久久亚洲精品中文字幕
|
久久精品国产亚洲av麻豆小说
|
色狠狠久久AV五月综合
|
精品久久久久久久无码
|
久久se精品一区精品二区
|
国产69精品久久久久777
|
精品国产一区二区三区久久
|
国产精品免费福利久久
|
日本久久久久久中文字幕
|
91久久精品无码一区二区毛片
|
国产精品xxxx国产喷水亚洲国产精品无码久久一区
|
久久se这里只有精品
|
国产午夜精品久久久久九九电影
|
色天使久久综合网天天
|
亚洲午夜久久久久妓女影院
|
亚洲精品乱码久久久久久蜜桃
|
伊人久久国产免费观看视频
|
无码人妻久久一区二区三区免费丨
|
亚洲国产精品狼友中文久久久
|
久久国产色av免费看
|
精品国产乱码久久久久久郑州公司
|
久久久精品午夜免费不卡
|
久久伊人中文无码
|
亚洲国产精品高清久久久
|