OnTheWay2012
埋葬昨天的我,迎來重生的我!
C++博客
首頁
新文章
新隨筆
聚合
管理
posts - 15, comments - 89, trackbacks - 0
反轉(zhuǎn)字符串
大家在面試的時候或者在網(wǎng)絡上經(jīng)常會看到讓寫一個字符串反轉(zhuǎn)的函數(shù)的這種題。
以下是我自己寫的字符串反轉(zhuǎn)的函數(shù),懇請各位指教。
char *Reverse_1(char *str)和char *Reverse_2(char *str) 實現(xiàn)的功能是把字符串反轉(zhuǎn),例如把helloworld反轉(zhuǎn)為dlrowolleh。
char *Reverse_3(char *str)實現(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
以下代碼用來測試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)
評論(1)
編輯
收藏
引用
所屬分類:
算法
FeedBack:
#
re: 反轉(zhuǎn)字符串
2010-05-08 17:45 |
小時候可靚了
就這樣一點點寫下去,就會很厲害。。。中間不要間斷
回復
更多評論
刷新評論列表
只有注冊用戶
登錄
后才能發(fā)表評論。
【推薦】100%開源!大型工業(yè)跨平臺軟件C++源碼提供,建模,組態(tài)!
相關文章:
給定一個字符串,求其所有可能組合
寫了兩個函數(shù)(1)把一個unsigned int 轉(zhuǎn)換成字符型的IP(2)鏈表插入元素,升序
反轉(zhuǎn)字符串
網(wǎng)站導航:
博客園
IT新聞
BlogJava
博問
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
常用鏈接
我的隨筆
我的評論
我參與的隨筆
留言簿
(4)
給我留言
查看公開留言
查看私人留言
隨筆分類
C、C++(2)
操作系統(tǒng)(Windows、Linux、Unix)
讀書筆記
個人感悟(4)
面經(jīng) (4)
軟件設計(1)
數(shù)據(jù)庫
算法(3)
線程、進程
英語
雜項
轉(zhuǎn)載
隨筆檔案
2011年1月 (1)
2010年12月 (2)
2010年11月 (1)
2010年6月 (1)
2010年5月 (6)
2010年4月 (1)
2010年3月 (3)
友情連接
搜索
最新評論
1.?re: 對“隨筆”所寫的一篇文章《鏈表實驗》的一點看法
評論內(nèi)容較長,點擊標題查看
--陳梓瀚(vczh)
2.?re: 對“隨筆”所寫的一篇文章《鏈表實驗》的一點看法
謝謝咯,呵呵。我喜歡這代碼風格,向你學習
--あ維wêiセ
3.?re: 一種基于引用計數(shù)機制的智能指針實現(xiàn)
把A *p = new A();這句換成A p;不行嗎?
--叫我老王吧
4.?re: 一種基于引用計數(shù)機制的智能指針實現(xiàn)
Boost 里面有,在C++ TR1 里面也已經(jīng)有這種指針(就是來自Boost)
--Phuehvk
5.?re: 一種基于引用計數(shù)機制的智能指針實現(xiàn)[未登錄]
比較討厭這種引用計數(shù)指針的使用,一旦使用就意味這在所有的函數(shù)參數(shù)中必須使用指針引用或者值拷貝,一旦某些函數(shù)要求用裸指針,就可能引發(fā)問題。
--hdqqq
閱讀排行榜
1.?一道面試題(求一個unsigned int 數(shù)的二進制表示中有多少個1?)(6160)
2.?一種線程安全的單例模式實現(xiàn)方式(5749)
3.?一種基于引用計數(shù)機制的智能指針實現(xiàn)(2920)
4.?不要把類的外衣脫下來,讓類的美麗消失于無形(2782)
5.?幾道面試題,有的做出來了,有的不會做,請大家指教(2620)
評論排行榜
1.?一道面試題(求一個unsigned int 數(shù)的二進制表示中有多少個1?)(15)
2.?一種線程安全的單例模式實現(xiàn)方式(15)
3.?幾道面試題,有的做出來了,有的不會做,請大家指教(14)
4.?令人氣憤的現(xiàn)象(13)
5.?不要把類的外衣脫下來,讓類的美麗消失于無形(9)
Copyright ©2025 OnTheWay Powered By
博客園
模板提供:
滬江博客
亚洲人成伊人成综合网久久久
|
久久久久国产一区二区三区
|
中文字幕亚洲综合久久2
|
精品国产热久久久福利
|
欧美精品福利视频一区二区三区久久久精品
|
7777久久亚洲中文字幕
|
国产精品无码久久四虎
|
久久99国产精一区二区三区
|
久久只有这精品99
|
国产亚洲综合久久系列
|
久久久久久极精品久久久
|
久久综合丝袜日本网
|
亚洲国产成人久久精品99
|
国产韩国精品一区二区三区久久
|
国产精品成人99久久久久
|
五月丁香综合激情六月久久
|
日韩十八禁一区二区久久
|
精品一久久香蕉国产线看播放
|
日韩欧美亚洲综合久久
|
狠狠色丁香婷婷久久综合不卡
|
韩国三级中文字幕hd久久精品
|
久久综合久久综合久久综合
|
亚洲精品无码久久久久AV麻豆
|
99久久精品国产麻豆
|
久久久久99精品成人片欧美
|
亚洲国产精品久久
|
99久久er这里只有精品18
|
亚洲国产精品无码久久98
|
久久国产欧美日韩精品
|
无码人妻久久一区二区三区免费
|
亚洲精品乱码久久久久久蜜桃
|
久久国产精品久久
|
亚洲va久久久噜噜噜久久男同
|
久久精品国产影库免费看
|
精品久久久久久亚洲精品
|
久久99热这里只有精品66
|
久久99热国产这有精品
|
精品久久久久久中文字幕人妻最新
|
无码人妻久久一区二区三区
|
亚洲成色WWW久久网站
|
热re99久久6国产精品免费
|