列表

详情


NC339. 翻转单词

描述

给定一个字符串,请你把字符串中所有用空格隔开的单词翻转,保留原有的空格和单词顺序

数据范围:字符串长度满足 , 字符串中仅包含小写英文字母和空格

示例1

输入:

"I am a programmer"

输出:

"I ma a remmargorp"

示例2

输入:

"nowcoder"

输出:

"redocwon"

原站题解

上次编辑到这里,代码来自缓存 点击恢复默认模板

C++ 解法, 执行用时: 5ms, 内存消耗: 1032KB, 提交时间: 2022-08-06

static const auto io_sync_off = [](){
    std::ios::sync_with_stdio(false);
    std::cout.tie(nullptr);
    std::cin.tie(nullptr);
    return nullptr;
}();
class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param str string字符串 
     * @return string字符串
     */
    void reverse(string &str,int start,int end)
    {
        for(int i=start,j=end;i<j;i++,j--)
            swap(str[i],str[j]);
    }
    string reverseWord(string str) {
        // write code here
        for(int i=0;i<str.size();i++)
        {
            int j=i;
            while(str[j]!=' '&&j<str.size())
                j++;
            reverse(str,i,j-1);
            i=j;
        }
        return str;
        
    }
};

C++ 解法, 执行用时: 5ms, 内存消耗: 1052KB, 提交时间: 2022-07-23

static const auto io_sync_off = [](){
    std::ios::sync_with_stdio(false);
    std::cout.tie(nullptr);
    std::cin.tie(nullptr);
    return nullptr;
}();
class Solution {
public:
    void reverse(string& str,int start,int end)
    {
        for(int i=start,j=end;i<j;i++,j--)
            swap(str[i],str[j]);
    }
    string reverseWord(string str) {
        for(int i=0;i<str.size();i++)
        {
            int j=i;
            while(str[j]!=' '&&j<str.size())
                j++;
            reverse(str,i,j-1);
            i=j;
        }
        return str;
    }
};

C 解法, 执行用时: 6ms, 内存消耗: 780KB, 提交时间: 2022-06-25

char* reverseWord(char* str ) {
    int a = 0, b = 0, h = strlen(str);
    
    while (b < h) {
        a = b;
        while (b < h && str[b] != ' ')
            ++b;
        int i = a, j = b - 1;
        while (i < j) {
            int k = str[i];
            str[i] = str[j];
            str[j] = k;
            i++;
            j--;
        }
        ++b;
    }
    return str;
}

C 解法, 执行用时: 6ms, 内存消耗: 780KB, 提交时间: 2022-04-23

/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 * 
 * @param str string字符串 
 * @return string字符串
 *
 * C语言声明定义全局变量请加上static,防止重复定义
 */
/*void reverse(char* small, int len){
    int i = 0, j = len -1;
    char tmp;
    while(i < j){
        tmp = small[i];
        small[i] = small[j];
        small[j] = tmp;
        i++; j--;
    }
}
*/

char* reverseWord(char* str ) {
   int left = 0, right = 0, n = strlen(str);
    while(right < n){
        left = right;
        while(right < n && str[right] != ' ')
            ++right;
        int i = left, j = right -1;
        while(i<j){
            int tmp = str[i];
            str[i] = str[j];
            str[j] = tmp;
            i++; j--;
        }
        ++right;
    }
    return str;
}

C 解法, 执行用时: 6ms, 内存消耗: 788KB, 提交时间: 2022-06-30

/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
输入:
"I am a programmer"
复制
返回值:
"I ma a remmargorp"

输入:
"nowcoder"
复制
返回值:
"redocwon"
 */

void reverse(char *str, int left, int right){
    
    int temp;
    while(left<right){
        temp=str[left];
        str[left]=str[right];
        str[right]=temp;
        
        left++;
        right--;
    }
    
}

char* reverseWord(char* str ) {
    // write code here
    
    int len=strlen(str);
    
    int i = 0,j=0;
    
    while(i<len){
        j=i;
        
        while(j<len){
            if(str[j]==' '){
                break;    
            }else{
                j++;
            }
        }
        
        reverse(str,i,j-1);
        i=j+1;
    }
    
    return str;
    
    
}

上一题