(字符串)句子翻转

题目:

翻转句子中全部的单词,单词内容不变,例如

I’m a student. ---->student. a I’am

思路:

与前面数组循环移动或翻转是一样的思路。

1、每个单词单独翻转,如m’I a .tneduts

2、翻转整个句子,如student. a I’m

由于这里是全部翻转,所以先单独翻转,后整个翻转和先整个翻转,在单独翻转的效果是一样的。

代码:

#include <iostream>

using namespace std;

void reverse(string &str,int start,int end){
    char tmp;
    int i=start;
    int j=end;
    while(i<j){
        tmp=str[i];
        str[i]=str[j];
        str[j]=tmp;
        i++;
        j--;
    }
}

void reverse_sentence(string &str){
    int len=str.length();
    int start=0;
    int index=0;
    while(index<len){
        while(str[index]!=‘ ‘ && index<len)
            index++;
        reverse(str,start,index-1);
        while(str[index]==‘ ‘ && index<len)
            index++;
        start=index;
    }
    reverse(str,0,len-1);
}

int main()
{
    string str="I‘m a student!";
//    cout<<str.length()<<endl; //15
//    cout<<sizeof(str)<<endl;  //4
    reverse_sentence(str);
    cout<<str<<endl;
    return 0;
}

运行结果:

时间: 2024-12-28 02:44:35

(字符串)句子翻转的相关文章

单词、字符串儿翻转,栈实现!

对字符串"this is very good"进行翻转,即"good very is this".注意每一个单词仍是正序 思路: 1.字符串的翻转的问题.能够使用栈实现. 2.先把全部字符翻转,然后对再对某一个单词翻转,终于实现题目要求. C语言代码例如以下: 先把简单的栈实现列出来: #ifndef dataStruct_myStack_h #define dataStruct_myStack_h #define kStacksize 100 typedef st

【C语言】将字符串顺序翻转,如: I am a student 转成:student a am I

//将字符串顺序翻转 //如: I am a student 转成:student a am I #include <stdio.h> #include <string.h> void fanw( char *left,char *right ) //把每个单词单词翻转 { char* pleft = left; char* pright = right; char temp; while( pleft < pright ) { temp = *pleft; *pleft =

字符串儿翻转,栈实现!

对字符串"this is very good"进行翻转,即"good very is this":注意每个单词仍是正序 思路: 1.字符串的翻转的问题,可以使用栈实现. 2.先把所有字符翻转,然后对再对某一个单词翻转,最终实现题目要求. C语言代码如下: 先把简单的栈实现列出来: #ifndef dataStruct_myStack_h #define dataStruct_myStack_h #define kStacksize 100 typedef struc

【算法】字符串问题——翻转字符串

/** * 翻转字符串' * 给定一个字符类型的数组chas,请在单词间作逆序调整.只要做到单词顺序逆序即可. * 例如,如果看成字符串"dog loves pig",则调整为"pig loves dog" * 过程:先整体逆序,在局部单词逆序 */ public static void rotateWord(char[] chas) { if (chas == null || chas.length <= 0) { return; } reverse(cha

【字符串】实现字符串的翻转

1 import java.util.Scanner; 2 3 /** 4 * 功能:字符串翻转,例如how are you 翻转为you are how 5 */ 6 public class Main5 { 7 8 public String swap(String string) { 9 10 if (string == null) { 11 return null; 12 } 13 14 String[] strings = string.split(" "); 15 16 S

python输入一个字符串,输出翻转后的字符串(翻转字符串)

题目:输出一个字符串,输出翻转后的字符串.例如:输入字符串a123,输出321a. 方法一:使用列表的reverse方法 1 string=input('请输入一个字符串:') 2 lst=list(string) #使用列表,将列表转化为字符串 3 lst.reverse() 4 print(''.join(lst)) 运行结果: 请输入一个字符串:abc123 321cba 方法二:切片法 1 def reverse(): 2 s=input("请输入一个字符串:") 3 retu

字符串的翻转

有一个字符串"student am i",将它转换为"i am student".(空间复杂度为O(1)) 实现代码: void swap(char *left, char *right ) { char *ret = left ; while (left < right) { int temp = *left ; * left = *right ; * right = temp; left++; right--; } } char* Reverse(cons

数列和+水仙花数+句子翻转

1.数列和 import math m,n = map(int, raw_input().split()) answer = [] for i in range(n): answer.append(m) m = math.sqrt(m) print '%.2f' % sum(answer) 2.水仙花数 m,n = map(int,raw_input().split()) answer = [] def isFlower(x): return x == sum([int(i)**3 for i

数组与字符串:翻转子串

题目描述 假定我们都知道非常高效的算法来检查一个单词是否为其他字符串的子串.请将这个算法编写成一个函数,给定两个字符串s1和s2,请编写代码检查s2是否为s1旋转而成,要求只能调用一次检查子串的函数. 给定两个字符串s1,s2,请返回bool值代表s2是否由s1旋转而成.字符串中字符为英文字母和空格,区分大小写,字符串长度小于等于1000. 测试样例: "Hello world","worldhello " 返回:false "waterbottle&qu