字符串翻转

字符串翻转

要求:将字符串进行翻转,但每个单词内的字符顺序不变。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---------
微信分享/微信扫码阅读