前言
前段时间做了这样一道笔试题,是说给你提供俩个字符串,然后让你在第一个字符串里面的第二个字符片段进行反转,如果未曾找到就直接输出第一个字符串。
例1:输入:abcde bc 输出:acbde
例2:输入:hello world 输出:hello
正文(代码部分)
C++
那么首先给出C++代码模式:
#include<iostream>
#include<string>
using namespace std;
//此函数用于在str1字符串中将关于str2字符串部分进行翻转
bool str1_str2(string& str1,string& str2) {
bool t = true;//返回只返回是否实现该功能
size_t start_2 = str1.find(str2, 0);//先在str1中试图找到str2,若找到返回str2的首位下标
if (start_2 != string::npos) {//若未曾找到则返回string::npos
reverse(str2.begin(), str2.end());//将str2进行翻转
str1.replace(start_2, str2.length(), str2);//将翻转后的str2替换进str1原本str2的位置
}
else {
cout << "在str1字符串中未曾找到str2字符串,谢谢!"<< endl;
t = false;
}
return t;
}
int main() {
string str1, str2;
cout << "请输入两个字符串:" << endl;
cin >> str1 >> str2;
if(str1_str2(str1, str2)) {
cout << "实现该功能后的字符串为" << str1 << endl;
}
return 0;
}
作者自己的IDE使用的是ACM模式,如果是核心代码模式只需要在str1_str2函数的末尾部分就稍作修改就行。
java
然后给出这个java版本的代码:
import java.util.Scanner;
public class StringManipulation {
// 此方法用于在str1字符串中将关于str2字符串部分进行翻转
public static boolean manipulateStrings(StringBuilder str1, String str2) {
boolean t = true; // 返回值只表示是否实现了该功能
int start2 = str1.indexOf(str2); // 在str1中找到str2的起始位置
if (start2 != -1) { // 如果找到了str2
StringBuilder reversedStr2 = new StringBuilder(str2).reverse(); // 翻转str2
str1.replace(start2, start2 + str2.length(), reversedStr2.toString()); // 替换str2为翻转后的str2
} else {
System.out.println("在str1字符串中未找到str2字符串,谢谢!");
t = false;
}
return t;
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入两个字符串:");
StringBuilder str1 = new StringBuilder(scanner.next());
String str2 = scanner.next();
if (manipulateStrings(str1, str2)) {
System.out.println("实现该功能后的字符串为: " + str1);
}
}
}
python
接下来是python版本:
def manipulate_strings(str1, str2):
t = True # 返回值只表示是否实现了该功能
start_2 = str1.find(str2, 0) # 在str1中找到str2的起始位置
if start_2 != -1: # 如果找到了str2
reversed_str2 = str2[::-1] # 翻转str2
str1 = str1[:start_2] + reversed_str2 + str1[start_2 + len(str2):] # 替换str2为翻转后的str2
else:
print("在str1字符串中未找到str2字符串,谢谢!")
t = False
return t
def main():
str1 = input("请输入两个字符串:")
str2 = input()
if manipulate_strings(str1, str2):
print("实现该功能后的字符串为:", str1)
if __name__ == "__main__":
main()
Go
最后是go语言:
package main
import (
"fmt"
"strings"
)
// 此函数用于在str1字符串中将关于str2字符串部分进行翻转
func manipulateStrings(str1, str2 string) bool {
t := true // 返回值只表示是否实现了该功能
start2 := strings.Index(str1, str2) // 在str1中找到str2的起始位置
if start2 != -1 { // 如果找到了str2
runes := []rune(str2) // 将str2转换为Unicode字符数组以进行翻转
for i, j := 0, len(runes)-1; i < j; i, j = i+1, j-1 {
runes[i], runes[j] = runes[j], runes[i] // 翻转str2
}
reversedStr2 := string(runes)
str1 = str1[:start2] + reversedStr2 + str1[start2+len(str2):] // 替换str2为翻转后的str2
} else {
fmt.Println("在str1字符串中未找到str2字符串,谢谢!")
t = false
}
return t
}
func main() {
var str1, str2 string
fmt.Println("请输入两个字符串:")
fmt.Scan(&str1)
fmt.Scan(&str2)
if manipulateStrings(str1, str2) {
fmt.Println("实现该功能后的字符串为:", str1)
}
}
最后,写文不易,不收藏也请给个赞,谢谢亲~!
(本文仅供学习时参考,如有错误,纯属作者技术不到位,不足之处请多指教,谢谢)