问题

该文章的最新版本已迁移至个人博客【比特飞】,单击链接 https://www.byteflying.com/archives/3933 访问。

编写一个函数,其作用是将输入的字符串反转过来。

输入: "hello"

输出: "olleh"

输入: "A man, a plan, a canal: Panama"

输出: "amanaP :lanac a ,nalp a ,nam A"


Write a function that takes a string as input and returns the string reversed.

Input: "hello"

Output: "olleh"

Input: "A man, a plan, a canal: Panama"

Output: "amanaP :lanac a ,nalp a ,nam A"


示例

该文章的最新版本已迁移至个人博客【比特飞】,单击链接 https://www.byteflying.com/archives/3933 访问。

public class Program {

    public static void Main(string[] args) {
var s = "A man, a plan, a canal: Panama"; var res = ReverseString(s);
Console.WriteLine(res); s = "private static string ReverseString(string s)"; res = ReverseString2(s);
Console.WriteLine(res); s = "using System.Collections.Generic;"; res = ReverseString3(s);
Console.WriteLine(res); s = "var res = ReverseString(s);"; res = ReverseString4(s);
Console.WriteLine(res); s = "Console.WriteLine(res);"; res = ReverseString5(s);
Console.WriteLine(res); s = "var sb = new StringBuilder();"; res = ReverseString6(s);
Console.WriteLine(res); Console.ReadKey();
} private static string ReverseString(string s) {
//LeetCode超时未AC
var stack = new Stack<char>();
foreach(var c in s) {
stack.Push(c);
}
var res = string.Empty;
while(stack.Count != 0) {
res += stack.Pop();
}
return res;
} private static string ReverseString2(string s) {
//LeetCode超时未AC
var list = new List<char>();
foreach(var c in s) {
list.Add(c);
}
var res = string.Empty;
for(var i = list.Count - 1; i >= 0; i--) {
res += list[i];
}
return res;
} private static string ReverseString3(string s) {
var length = s.Length;
var i = 0;
var j = length - 1;
var chars = new char[length];
while(i <= length - 1) {
chars[j] = s[i];
i++;
j--;
}
return new string(chars);
} private static string ReverseString4(string s) {
var chars = s.ToCharArray();
var start = 0;
var end = s.Length - 1;
while(start < end) {
var swap = chars[start];
chars[start] = chars[end];
chars[end] = swap;
start++;
end--;
}
return new String(chars);
} private static string ReverseString5(string s) {
var sb = new StringBuilder();
for(var i = s.Length - 1; i >= 0; i--) {
sb.Append(s[i]);
}
return sb.ToString();
} private static string ReverseString6(string s) {
var arr = s.ToCharArray();
Array.Reverse(arr);
return new string(arr);
} }

以上给出6种算法实现,以下是这个案例的输出结果:

该文章的最新版本已迁移至个人博客【比特飞】,单击链接 https://www.byteflying.com/archives/3933 访问。

amanaP :lanac a ,nalp a ,nam A
)s gnirts(gnirtSesreveR gnirts citats etavirp
;cireneG.snoitcelloC.metsyS gnisu
;)s(gnirtSesreveR = ser rav
;)ser(eniLetirW.elosnoC
;)(redliuBgnirtS wen = bs rav

分析:

显而易见,以上6种算法的时间复杂度均为:  。

C#LeetCode刷题之#344-反转字符串​​​​​​​(Reverse String)的更多相关文章

  1. C#LeetCode刷题之#443-压缩字符串​​​​​​​(String Compression)

    问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/3943 访问. 给定一组字符,使用原地算法将其压缩. 压缩后的长度 ...

  2. C#LeetCode刷题之#205-同构字符串(Isomorphic Strings)

    问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/3770 访问. 给定两个字符串 s 和 t,判断它们是否是同构的. ...

  3. C#LeetCode刷题之#557-反转字符串中的单词 III(Reverse Words in a String III)

    问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/3955 访问. 给定一个字符串,你需要反转字符串中每个单词的字符顺 ...

  4. C#LeetCode刷题之#345-反转字符串中的元音字母​​​​​​​(Reverse Vowels of a String)

    问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/3935 访问. 编写一个函数,以字符串作为输入,反转该字符串中的元 ...

  5. C#LeetCode刷题之#859-亲密字符串​​​​​​​​​​​​​​(Buddy Strings)

    问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/3973 访问. 给定两个由小写字母构成的字符串 A 和 B ,只要 ...

  6. C#LeetCode刷题之#541-反转字符串 II(Reverse String II)

    问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/3951 访问. 给定一个字符串和一个整数 k,你需要对从字符串开头 ...

  7. 说了你可能不信leetcode刷题局部链表反转D92存在bug,你看了就知道了

    一.题目描述 找出数组中重复的数字 > 在一个长度为 n 的数组 nums 里的所有数字都在 0-n-1 的范围内.数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次. ...

  8. leetcode刷题七<整数反转>

    给出一个 位的有符号整数,你需要将这个整数中每位上的数字进行反转. 示例 : 输入: 输出: 示例 : 输入: - 输出: - 示例 : 输入: 输出: 假设我们的环境只能存储得下 32 位的有符号整 ...

  9. LeetCode刷题笔记-递归-反转二叉树

    题目描述: 翻转一棵二叉树. 解题思路: 1.对于二叉树,立马递归 2.先处理 根节点,不需改动 3.处根的左子树和右子树需要交换位置 4.递归处理左子树和右子树.步骤见1-3步 Java代码实现: ...

随机推荐

  1. 什么?你正在学web自动化测试?那这些Selenium的基本操作你了解过吗?

    在自动化测试中,我们都知道是通过定位元素来实现的,那么有时候我们定位元素定位不到是为什么呢? 1.页面出现了iframe 2.出现了新的窗口,没有实现句柄的切换 3.三种等待方式,没有选择其中之一来使 ...

  2. Python Ethical Hacking - TROJANS Analysis(4)

    Adding Icons to Generated Executables Prepare a proper icon file. https://www.iconfinder.com/ Conver ...

  3. 机器学习作业---K-Means算法

    --------------------------K-Means算法使用-------------------------- 一:数据导入及可视化 import numpy as np import ...

  4. 一个牛逼的FTP——Wring Ftp

    背景:总公司内网有一部分文档需要共享,想要一个能便捷管理的文档系统 需求:分帐号授权,有的帐号只能看,有的帐号只能新增,有的帐号可以增删改查,另外可以便捷的对帐号进行管理 方法: 一.Wing Ftp ...

  5. Disease Manangement 疾病管理

    题目描述 Alas! \(A\) set of \(D (1 <= D <= 15)\) diseases (numbered \(1..D\)) is rshning through t ...

  6. Redis之NoSql入门和概述(一)

    1. 为什么用 NoSQL? NoSQL指的是非关系型的数据库,NoSQL也称作Not Only SQL的缩写,是对不同于传统的关系型数据库的数据库管理系统的统称.NoSQL用于超大规模数据的存储.这 ...

  7. IntelliJ IDEA 2019.3.4永久破解(持续更新)--已更新

    第一步,下载最新破解包: 链接: https://pan.baidu.com/s/1djUF9TiNZC4rIfxczxfIew 提取码: f521 把破解包两个文件放进bin目录下,这一步极为重要! ...

  8. gc 模块常用函数

    """ 1.gc.set_debug(flags) 设置gc的debug日志,一般设置为gc.DEBUG_LEAK 2.gc.collect([generation]) ...

  9. PHP array_uintersect_uassoc() 函数

    实例 比较两个数组的键名和键值(使用用户自定义函数进行比较),并返回交集: <?phpfunction myfunction_key($a,$b){if ($a===$b){return 0;} ...

  10. Python time sleep()方法

    描述 Python time sleep() 函数推迟调用线程的运行,可通过参数secs指秒数,表示进程挂起的时间.高佣联盟 www.cgewang.com 语法 sleep()方法语法: time. ...