其他分享
首页 > 其他分享> > OJ刷题:#166&167 字符串操作1、字符串操作2

OJ刷题:#166&167 字符串操作1、字符串操作2

作者:互联网

题目:从键盘输入任意的一个字符串A ,其长度L 不小于6 ,同时再输入一个整数N (其中:N<L)作为插入点,以及任意的一个字符串B ,其长度为L1 (其中:L1<L ),现要求完成下列功能:

如果字符串A 的长度L 大于100 输出 100 ,否则输出L ;

在N 点处,插入字符串B 后,将得到一个新字符串C ,请计算并输出最后的字符串;

查找字符串C 中,从右到左第一个出现字母 x 的位置。

在这里插入图片描述
第一次的相反是将他要插入的位置进行后移要插入的个数,但是发现

string str = "Hello World";
// 此时他的位数是11位
str[1] = 'b';		// 可行
str[12] = 'c';		// 不可行

即不能对自身没有开辟的空间进行直接赋值,而append也偏离了我的初心。

因此考虑到用substr方法,直接 截取前后端,再字符串相加即可

#include <iostream>
#include <string>
#include <algorithm>

void combine_string() {
    using std::cout;
    using std::endl;
    using std::cin;
    using std::string;
    int N;
    string input_str, insert_str;
    string combine_str;
    cin >> input_str >> N >> insert_str;
    if (input_str.size() >= 5 && N < input_str.size() && insert_str.size() < input_str.size()) {
        if (input_str.size() > 100) {
            cout << "100" << endl;
        }
        else {
            cout << input_str.size() << endl;
        }
        
        string before_str = input_str.substr(0, N-1);
        string after_str = input_str.substr(N-1, input_str.size());
        combine_str = before_str + insert_str + after_str;
        cout << combine_str << endl;
        
        reverse(combine_str.begin(), combine_str.end());
        for (int i = 0; i < combine_str.size(); i++) {
            if (combine_str[i] == 'x') {
                cout << i+1 << endl;
                break;
            }
        }
    }
}
int main() {
    combine_string();
    return 0;
}

第二个题有些简单,在此不做过多叙述了
在这里插入图片描述
code

#include <iostream>
#include <string>
#include <algorithm>
void combine_string() {
    using std::cout;
    using std::endl;
    using std::cin;
    using std::string;
    int N;
    string input_str, insert_str;
    string combine_str;
    cin >> input_str >> N >> insert_str;
    if (input_str.size() >= 5 && N < input_str.size() && insert_str.size() < input_str.size()) {
        cout << input_str.size() << endl;
        for (int i = 0; i < input_str.size(); i++) {
            if (input_str[i] == 'a') {
                cout << i+1 << endl;
                break;
            }
        }
        string before_str = input_str.substr(0, N-1);
        string after_str = input_str.substr(N-1, input_str.size());
        combine_str = before_str + insert_str + after_str;
        cout << combine_str << endl;
    }
}
int main() {
    combine_string();
    return 0;
}

标签:std,OJ,str,using,字符串,input,166,size,string
来源: https://blog.csdn.net/qq_48322523/article/details/117533108