zoukankan      html  css  js  c++  java
  • 面试题42 左旋转字符串

    题目描述

    汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任务,就是用字符串模拟这个指令的运算结果。对于一个给定的字符序列S,请你把其循环左移K位后的序列输出。例如,字符序列S=”abcXYZdef”,要求输出循环左移3位后的结果,即“XYZdefabc”。是不是很简单?OK,搞定它!
     1 class Solution {
     2 public:
     3     string LeftRotateString(string str, int n) {
     4         int len = str.length();
     5         if(len == 0) return "";
     6         n = n % len;
     7         str += str;
     8         return str.substr(n, len);
     9     }
    10 };

    题目描述

    牛客最近来了一个新员工Fish,每天早晨总是会拿着一本英文杂志,写些句子在本子上。同事Cat对Fish写的内容颇感兴趣,有一天他向Fish借来翻看,但却读不懂它的意思。例如,“student. a am I”。后来才意识到,这家伙原来把句子单词的顺序翻转了,正确的句子应该是“I am a student.”。Cat对一一的翻转这些单词顺序可不在行,你能帮助他么?
     
     1 class Solution {
     2 public:
     3     void Reverse(string &str, int i, int j) {
     4         while (i < j) {
     5             char temp = str[i];
     6             str[i] = str[j];
     7             str[j] = temp;
     8             i++;
     9             j--;
    10         }
    11     }
    12 
    13     string ReverseSentence(string str) {
    14         if (str.length() == 0) {
    15             return "";
    16         }
    17         int i = 0, j = str.length() - 1;
    18         Reverse(str, i, j);
    19         i = j = 0;
    20         while (i < str.length()) {
    21             if (str[i] == ' ') {
    22                 i++;
    23                 j++;
    24             }
    25             else if (str[j] == ' ' || j == str.length() - 1) {
    26                 int t = j;
    27                 if (str[t] == ' ')
    28                     t--;
    29                 Reverse(str, i, t);
    30                 i = ++j;
    31             }
    32             else
    33                 j++;
    34         }
    35         return str;
    36     }
    37 };
  • 相关阅读:
    网络数据包分析工具列表
    完美支持Py3的微信开发库推荐
    微信后台服务器地址验证的逻辑
    人工智能头条技能树图谱汇集
    如何构建通用 api 中间层
    vue 2.0 购物车小球抛物线
    基于Vue的事件响应式进度条组件
    vuex学习总结
    vue 上传图片到阿里云(前端直传:不推荐)
    vue-router的history模式发布配置
  • 原文地址:https://www.cnblogs.com/wanderingzj/p/5359279.html
Copyright © 2011-2022 走看看