首页 > 试题广场 >

翻转单词序列

[编程题]翻转单词序列
  • 热度指数:683499 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 64M,其他语言128M
  • 算法知识视频讲解
牛客最近来了一个新员工Fish,每天早晨总是会拿着一本英文杂志,写些句子在本子上。同事Cat对Fish写的内容颇感兴趣,有一天他向Fish借来翻看,但却读不懂它的意思。例如,“nowcoder. a am I”。后来才意识到,这家伙原来把句子单词的顺序翻转了,正确的句子应该是“I am a nowcoder.”。Cat对一一的翻转这些单词顺序可不在行,你能帮助他么?

数据范围:
进阶:空间复杂度 ,时间复杂度 ,保证没有只包含空格的字符串
示例1

输入

"nowcoder. a am I"

输出

"I am a nowcoder."
示例2

输入

""

输出

""
推荐
public class Solution {
    public String ReverseSentence(String str) {
        if(str.trim().equals("")){
            return str;
        }
        String[] a = str.split(" ");
        StringBuffer o = new StringBuffer();
        int i;
        for (i = a.length; i >0;i--){
            o.append(a[i-1]);
            if(i > 1){
                o.append(" ");
            }
        }
        return o.toString();
    }
}

编辑于 2015-06-19 17:23:02 回复(45)
/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 *
 * @param str string字符串
 * @return string字符串
 */
char* ReverseSentence(char* str ) {
    int len=strlen(str);
    char *p=(char*)malloc(len*sizeof(char));
    for(int i=0;i<len;i++)
    {
        *(p+i)=*(str+len-i-1);
    }
    int count=0;
    char strs[10];
    for(;*p!='\0';p++)
    {
        if(*p!=' ')
        {
            strs[count]=*p;
            count++;
        }
        else {
            for(int i=0;i<count;i++)
            {
                *(p-i)=strs[i];
            }
       
        }
    }
    return p;
    // write code here
}
发表于 2023-11-27 14:37:16 回复(1)
void Reversestr(char* s,int l,int r)
{

    char tmp;
    while(l<=r)
    {
        tmp = s[l];
        s[l]=s[r];
        s[r]=tmp;
        l++;
        r--;
    }
}
char* ReverseSentence(char* str ) 
{
    // write code here
    int len = strlen(str),l=0;
    for(int i=0;i<len;i++)
    {
        if(str[i]==' ')
        {
            if(i-l>1)
                Reversestr(str,l,i-1);
            l=i+1;
        }
    }
    Reversestr(str,l,len-1);
    Reversestr(str,0,len-1);
    return str;
}

发表于 2023-05-26 13:25:00 回复(0)
/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 * 
 * @param str string字符串 
 * @return string字符串
 *
 * C语言声明定义全局变量请加上static,防止重复定义
 *
 * C语言声明定义全局变量请加上static,防止重复定义
 */
void reverse(char* str,int low,int high){
    char temp;
    while(low<high){
    temp=str[low];
    str[low]=str[high];
    str[high]=temp;
    low++;
    high--;
}  
}
char* ReverseSentence(char* str ) {
    // write code here
     int low=0;
     int high=strlen(str)-1;
     int i=0;
     int k=strlen(str);
     reverse(str,low,high);
     while(i<k){
         while(str[i]==' '&&i<k) i++;
         low=i;
         while(str[i]!=' '&&i<k) i++;
         high=i-1;
         reverse(str,low,high);
     }
    return str;
}

发表于 2022-05-05 23:50:57 回复(0)