笔试题其一之字符串内部分反转

前言

前段时间做了这样一道笔试题,是说给你提供俩个字符串,然后让你在第一个字符串里面的第二个字符片段进行反转,如果未曾找到就直接输出第一个字符串。

例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)
	}
}

最后,写文不易,不收藏也请给个赞,谢谢亲~! 

(本文仅供学习时参考,如有错误,纯属作者技术不到位,不足之处请多指教,谢谢)

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值