2025-02-22:找出加密后的字符串。用go语言,给定一个字符串 s 和一个整数 k,请使用以下方法对字符串进行加密: 对于

举报
福大大架构师每日一题 发表于 2025/02/22 20:16:47 2025/02/22
【摘要】 2025-02-22:找出加密后的字符串。用go语言,给定一个字符串 s 和一个整数 k,请使用以下方法对字符串进行加密:对于字符串 s 中的每个字符 c,将其替换为在字符串中 c 后面的第 k 个字符(以循环的方式进行)。最终返回加密后的字符串。1 <= s.length <= 100。1 <= k <= 10000。s 仅由小写英文字母组成。输入: s = “dart”, k = 3。输...

2025-02-22:找出加密后的字符串。用go语言,给定一个字符串 s 和一个整数 k,请使用以下方法对字符串进行加密:

对于字符串 s 中的每个字符 c,将其替换为在字符串中 c 后面的第 k 个字符(以循环的方式进行)。

最终返回加密后的字符串。

1 <= s.length <= 100。

1 <= k <= 10000。

s 仅由小写英文字母组成。

输入: s = “dart”, k = 3。

输出: “tdar”。

解释:

对于 i = 0,‘d’ 后面的第 3 个字符是 ‘t’。

对于 i = 1,‘a’ 后面的第 3 个字符是 ‘d’。

对于 i = 2,‘r’ 后面的第 3 个字符是 ‘a’。

对于 i = 3,‘t’ 后面的第 3 个字符是 ‘r’。

答案2025-02-22:

chatgpt

题目来自leetcode3210。

大体步骤如下:

1.给定输入字符串 s=“dart” 和整数 k=3。

2.计算 k 对字符串长度的取模,因为每个字符需要向后移动 k 个位置,但是超过字符串长度时需要循环移动,所以取模是必要的。在这个例子中,k % len(s) = 3 % 4 = 3。

3.将字符串分成两部分:s[k:] 表示从第 k 个字符到末尾的子字符串(“t”),s[:k] 表示从开头到第 k-1 个字符的子字符串(“dar”)。

4.加密后的字符串是这两部分连接起来的结果,即 “t” + “dar” = “tdar”。

整体时间复杂度:

  • 计算 k % len(s) 的时间复杂度是 O(1)。

  • 字符串的连接操作的时间复杂度为 O(n),n 是字符串的长度。

所以总的时间复杂度为 O(1) + O(n) = O(n)。

额外空间复杂度:

  • 除了存储输入字符串 s 和整数 k 的空间外,需要存储两个子字符串 s[k:] 和 s[:k],它们的长度分别为 len(s) - k 和 k。

  • 加密后的字符串需要存储,长度为 len(s)。

所以总的额外空间复杂度是 O(n)。

Go完整代码如下:

package main

import "fmt"

func getEncryptedString(s string, k int) string {
	k %= len(s)
	return s[k:] + s[:k]
}


func main() {
	s := "dart"
	k := 3
	result := getEncryptedString(s, k)
	fmt.Println(result)
}

在这里插入图片描述

Rust完整代码如下:

fn get_encrypted_string(s: &str, k: usize) -> String {
    let len = s.len();
    let k = k % len; // 计算有效的 k 值
    let (first, second) = s.split_at(k);
    format!("{}{}", second, first) // 组合新的字符串
}

fn main() {
    let s = "dart";
    let k = 3;
    let result = get_encrypted_string(s, k);
    println!("{}", result);
}

在这里插入图片描述

Python完整代码如下:

# -*-coding:utf-8-*-

def get_encrypted_string(s: str, k: int) -> str:
    k %= len(s)  # 计算有效的 k 值
    return s[k:] + s[:k]  # 组合新的字符串

def main():
    s = "dart"
    k = 3
    result = get_encrypted_string(s, k)
    print(result)

if __name__ == "__main__":
    main()

在这里插入图片描述

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。