来源:go-interview / Case

翻转字符串是一个常见的编程任务,可以用来练习基本的算法和数据结构。以下是不同编程语言中翻转字符串的方法:

1. Golang

在 Golang 中,可以使用 rune 类型来处理 Unicode 字符,并利用切片的反转来实现字符串翻转。

示例代码:

package main
 
import (
    "fmt"
)
 
func reverse(s string) string {
    runes := []rune(s) // 将字符串转换为 rune 切片,处理 Unicode 字符
    for i, j := 0, len(runes)-1; i < j; i, j = i+1, j-1 {
        runes[i], runes[j] = runes[j], runes[i] // 交换字符
    }
    return string(runes)
}
 
func main() {
    str := "hello world"
    reversed := reverse(str)
    fmt.Println(reversed) // 输出:dlrow olleh
}

2. Python

Python 的切片功能非常强大,可以用来简洁地翻转字符串。

示例代码:

def reverse(s):
    return s[::-1]
 
str = "hello world"
print(reverse(str))  # 输出:dlrow olleh

3. JavaScript

在 JavaScript 中,可以利用数组的方法来翻转字符串。

示例代码:

function reverse(s) {
    return s.split('').reverse().join('');
}
 
let str = "hello world";
console.log(reverse(str));  // 输出:dlrow olleh

4. C

在 C 语言中,可以通过双指针法来翻转字符串。

示例代码:

#include <stdio.h>
#include <string.h>
 
void reverse(char* str) {
    int left = 0;
    int right = strlen(str) - 1;
    while (left < right) {
        char temp = str[left];
        str[left] = str[right];
        str[right] = temp;
        left++;
        right--;
    }
}
 
int main() {
    char str[] = "hello world";
    reverse(str);
    printf("%s\n", str);  // 输出:dlrow olleh
    return 0;
}

5. Java

在 Java 中,可以使用 StringBuilder 类的 reverse 方法来翻转字符串。

示例代码:

public class Main {
    public static void main(String[] args) {
        String str = "hello world";
        String reversed = new StringBuilder(str).reverse().toString();
        System.out.println(reversed);  // 输出:dlrow olleh
    }
}

6. C++

在 C++ 中,可以使用 std::reverse 函数来翻转字符串。

示例代码:

#include <iostream>
#include <algorithm> // For std::reverse
#include <string>
 
int main() {
    std::string str = "hello world";
    std::reverse(str.begin(), str.end());
    std::cout << str << std::endl;  // 输出:dlrow olleh
    return 0;
}

总结

翻转字符串是一个简单但重要的编程任务,主要方法包括:

  • Golang: 使用 rune 切片和交换字符。
  • Python: 使用切片 [::-1]。
  • JavaScript: 利用 split、reverse 和 join 方法。
  • C: 双指针法进行原地交换。
  • Java: 使用 StringBuilder 的 reverse 方法。
  • C++: 使用 std::reverse 函数。

不同编程语言提供了不同的实现方式,选择合适的语言和方法可以有效地完成字符串翻转任务。