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

将 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)

相关文章:

  • 硬链接和软链接
  • uvm factory
  • SvelteKit 最新中文文档教程(13)—— Hooks
  • spring security的过滤器链
  • 基于redis实现会话保持
  • react native 0.72.5集成react-navigation
  • 使用idea开发spark程序
  • 2025年数智化电商产业带发展研究报告260+份汇总解读|附PDF下载
  • uWebSockets开发入门
  • ai-api-union项目,适配各AI厂商api
  • win32汇编环境,网络编程入门之十四
  • 不落因果与不昧因果
  • nginx refer与origin的异常数据拦截
  • Ollama - 官方文档翻译
  • Redis的List类型
  • 自动化发布工具CI/CD实践Jenkins各配置功能介绍和管理!
  • 3.28 代码随想录第二十九天打卡
  • uvm phase
  • 海康威视摄像头混合目标检测事件数据说明文档
  • 3.1.3 MYSQL连接池
  • 企业cms建站/合肥seo招聘
  • 公司品牌策划设计/网站优化排名哪家好
  • i岗网站建设/创建网站要钱吗
  • 在线制作公司网站/网络推广需要什么
  • 手游门户网站建设/市场调查报告模板及范文
  • 一个网站做三页是什么意思/营销推广型网站