zoukankan      html  css  js  c++  java
  • 分词逆序输出

    下午做一道题准备准备期末考试。 Given a valid identifier in C programs, please write a program to reverse it by respectively reversing each part separated by ‘_’.
    INPUT 3 nt_45 _me_ abc_123_456
    OUTPUT tn_54 _em_ cba_321_654
    看完后就开始敲了,思路就是扫一遍string,用hold去存贮还未逆序的单词。遇到'_'就开始逆序
    ,之后清空hold,直到结束。
    信心满满的去敲了一会儿,结果发现有好多结果错误,最后发现是由于一开始没有想好start 和end到底要放在哪里,结果出现了不同的将hold赋值到s的情况,最后我将思路就定格在把start放在第一个有字符的地方,end提前i到达i的位置,遇到'_'就将end和start挪向下一个位置。
    在hold往s传递是也有思维障碍,总是想不好结束位置,最后在大脑中构想两个数组,每一次的长度就是end-start
    s从start开始向右
    hold从end-start-1开始向左
    一个个赋值。
    代码如下:如有不足,欢迎更正

    #include
    #include
    using namespace std;
    void rever(string &s);
    int main() {
        int N;
        string s;
        cin >> N;
        while (N--) {
            cin >> s;
            rever(s);
            cout << s << endl;
        }
        return 0;
    }
    void rever(string &s) {
        string hold;
        int size = s.size(), start = 0, end = start;
        for (int i = 0; i < size; i++) {
        if (s[i] != '_') {
        hold += s[i];
        end++;
        if (i == size - 1) {
            for (int j = 0; j < end - start; j++) {
                s[start + j] = hold[end - start - j - 1];
            }
        }
        } else if (hold.size() != 0) {
            for (int j = 0; j < end - start; j++) {
                s[start + j] = hold[end - start - j - 1];
            }
            hold.clear();
            start = end = i + 1;
        } else {
            start = end = i + 1;
        }
    }
    

      

  • 相关阅读:
    Delphi数据类型转换
    js截取指定长度字符
    Internet Explorer无法打开站点,已终止操作
    关于最近做项目的一点点总结
    屏蔽右键菜单
    屏蔽回车自动提交
    自己写的一个客户端验证js
    如何播放声音文件
    如何:使用 CodeDOM 创建类
    js操作dom(4)关于xml节点属性的操作
  • 原文地址:https://www.cnblogs.com/eggplant-is-me/p/6720082.html
Copyright © 2011-2022 走看看