字符串翻转
字符串翻转
要求:将字符串进行翻转,但每个单词内的字符顺序不变。string=’I love you’,变为'you love I'
基本思想:对字符串进行两次翻转,第一次翻转对整个字符串进行翻转,如string=’I love you',翻转后变为 'uoy evol I',然后对每个单元字符串分别进行翻转,单元字符串指的是每个单词。 翻转后变为 you love I
1、首先要实现整个字符串翻转:
def reverse_one(string):
temp,length = list(string),len(string)
for i,j in zip(range(length/2),range(length-1,0,-1)):
temp[i],temp[j] = temp[j],temp[i]
return ''.join(temp)
2、对每一个单词都要进行翻转:
def reverse(string):
once = reverse_one(string)
temp = []
for word in once.split(" "):
temp.append(reverse_one(word))
return ' '.join(temp)
其实只要记住单词与单词之间是用空格隔开的就可以了。
..................................下面是我用C语言写的。额,太长时间了,C语言忘得差不多了。
#include<stdio.h>
#include<stdlib.h>
void Reverse(char *start,char *end)
{
if(start==NULL ||end==NULL)
return;
while(start<end)
{
char temp;
temp = *start;
*start = *end;
*end = temp;
start++;
end++;
}
}
char *ReverseSentence(char *string)
{
char *start = string;
char *end = start;
while(*end!='\0')
end++;
Reverse(start,--end);
start=end=string;
while(*start!='\0')
{
if(*start==" ")
{
start++;
end++;
}
else if(*end==" " || *end== '\0')
{
Reverse(start,--end);
start = ++end;
}
else
end++;
}
}
--------EOF---------
微信分享/微信扫码阅读
微信分享/微信扫码阅读