zoukankan      html  css  js  c++  java
  • 面试题 42 翻转

    (1)经典面试题: 翻转句子中的单词,并将单词的字母顺序翻转, 标点符号和字母一样处理

    void Reverse(char *begin, char *end){
    
        if(begin == NULL || end == NULL)
            return ;
        while(begin < end){
            char tp = *begin;
            *begin = *end;
            *end = tp;
            begin++;
            end--;
        }
    }
    
    char * ReverseSentence(char *sentence){
    
        if(sentence == NULL)
            return NULL;
        char *end = sentence;
        while(*end != ‘0' )end++;
        end--;
        Reverse(sentence, end);
        char *begin = sentence;
        end = sentence;
        while(begin != ''){
            while(*end != ' ' && *end != '') end++;
            Reverse(begin,end-1);
            while(*end == ' ') end++;
            begin = end;
        }
        return sebtence;
    }

    (2)左旋若干个字符

    char * LeftRotateString(char *str, int n){
    
        //if(str == NULL) return str;
        int len = strlen(str);
        if(str == NULL || n <0 || n > len)
            return str;
        
        char *firstbegin = str;
        char *firstend = str + n-1;
        char * secondbegin = str + n;
        char * secondend = str +len -1;
        Reverse(firstbegin, firstend);
        Reverse(secondbegin, secondend);
        Reverse(firstbegin, secondend);
        
        return str;
        
    }
  • 相关阅读:
    类的继承
    面向对象的编程
    Python的模块
    ES6_12_Set和Map数据结构以及for of循环
    ES6_11_字符串、数值、数组、对象扩展
    ES6_09_Generator函数
    ES6_08_Iterator遍历器
    ES6_07_Symbol属性
    ES6_05_三点运算符和形参默认值
    Sqlstate解释
  • 原文地址:https://www.cnblogs.com/graph/p/3327141.html
Copyright © 2011-2022 走看看