当前位置: 首页 > article >正文

将 char [] str = “hello,you,world” 改为 “world,you,hello“,要求空间复杂度为1

题目:

将 char [] str = “hello,you,world” 改为 "world,you,hello",要求空间复杂度为1

(也就是使用的变量只能是单个字符或者常数,不能使用数组!!!!!)

解答:

实现的关键点在于:

  1. 整体反转字符串只用自身的字符串空间!
  2. 逐个反转子字符串仍然是只用自身的字符串空间!
  3. 空间复杂度为 O(1),意味着不能使用额外的内存空间。

C语言实现:

#include <stdio.h>
#include <string.h>

// 工具函数:反转字符串
void reverse(char str[], int start, int end) {
    while (start < end) {
        char temp = str[start];
        str[start] = str[end];
        str[end] = temp;
        start++;
        end--;
    }
}

// 主函数
int main() {
    char str[] = "hello,you,world";  // 原始字符串
    int len = strlen(str);

    // Step 1: 整体反转字符串
    reverse(str, 0, len - 1);

    // Step 2: 逐个反转子字符串
    int start = 0;
    for (int i = 0; i <= len; i++) {
        if (str[i] == ',' || str[i] == '\0') {
            reverse(str, start, i - 1);  // 反转每个子字符串
            start = i + 1;
        }
    }

    // 输出结果
    printf("Reversed string: %s\n", str);
    return 0;
}

python实现:

def reverse_string(s, start, end):
    # 将字符串列表部分反转
    while start < end:
        s[start], s[end] = s[end], s[start]
        start += 1
        end -= 1

def reverse_words_in_string(s):
    # 将字符串转为列表以便修改
    str_list = list(s)
    n = len(str_list)

    # Step 1: 整体反转
    reverse_string(str_list, 0, n - 1)

    # Step 2: 按单词反转
    start = 0
    for i in range(n + 1):
        if i == n or str_list[i] == ',':
            reverse_string(str_list, start, i - 1)
            start = i + 1

    return ''.join(str_list)

# 测试
original = "hello,you,world"
result = reverse_words_in_string(original)
print("Reversed string:", result)


http://www.kler.cn/a/613162.html

相关文章:

  • 计算机期刊征稿 | 计算机-网络系统:物联网系统架构、物联网使能技术、物联网通信和网络协议、物联网服务和应用以及物联网的社会影响
  • 前端Three.js面试题及参考答案
  • BPM :提升企业流程效率的利器
  • 【今日半导体行业分析】2025年3月24日
  • 【HTML 基础教程】HTML 属性
  • 年化33.9%的稳健策略 | streamlit和dash驱动的智能量化投研(python代码+数据)
  • 刘裕的简介
  • macOS 制作dmg磁盘映像安装包
  • 【PDF提取指定区域内容保存表格】提取PDF电子单据内容,将内容保存为表格并将内容组合进行批量改名操作,基于C++的方式快速实现
  • 头歌 | Linux之用户高级管理
  • 深入解析 TypeScript 核心配置文件 tsconfig.json
  • Spring Boot 3.2性能优化:响应速度提升50%方案
  • 使用multiprocessing
  • 记录一次交易耗时有毛刺TDSQL数据库排查过程
  • ResNet(残差网络)中的残差是什么?
  • 网盘解析工具1.3.0,修改了一些bug,建议更新到此版本
  • OpenCV 图形API(或称G-API)
  • 小型水库大坝安全及水雨情监测技术方案
  • 第 8 章:使用更好的库_《C++性能优化指南》_notes
  • 数据库——MySQL字符、日期函数