【LC_Lesson1】--字符串反转练习
LeetCode算法练习题目一: 给定一个字符串,要求将该字符串反转后输出
努力学习,天天向上。借助LeetCode的题目,练习编码能力,数据结构,以及C++和Python的编码能力。
一. 算法实现
解法一: 首尾互换位置
(重点:关注到不同方法的时间复杂度,空间复杂度,以及一种评测算法效率的实现方式)
比较好的方式,首位交换位置
C++实现方式如下:
# include <iostream>
using namespace std;
class Solution{
public:
void reverseString(string str);
};
void Solution::reverseString(string str)
{
int i;
int j = str.length()-;
unsigned char temp;
while(i < j)
{
temp = str[i];
str[i] = str[j];
str[j] = temp;
i++;j--;
}
for(i=;i<str.length();i++)
cout << str[i];
cout << endl;
}
int main(void)
{
Solution str;
str.reverseString("hello,wwz");
return ;
}
结果如下:

python实现方式:
def ReverseSting1(list_string):
length = len(list_string);
i = 0;
j = length - 1;
while i < j:
temp = list_string[j];
list_string[j] = list_string[i];
list_string[i] = temp;
i += 1;
j -= 1;
print(list_string) string = 'abcdefghijklmn'
list_string = list(string)
ReverseSting1(list_string)
结果如下:

注意:python中的字符串是只读属性,因此为了方便修改,将其转换成列表是一个不错的选择。
解法二: 暴力执行
最简单的方式,就是暴力执行,将整个数据包遍历一遍。如果有n个数据,因此需要执行n次,时间复杂度就是很直观的O(n),代码就不写了,比较简答
二. 效率分析
首尾交换
假如有n个元素,由于首尾同时遍历扫描,因此将会执行n/2次运算,可算作时间复杂度为O(n/2),实际上没有这种说法,对于同等量级的运算更多都会表示为O(n)
暴力执行
前文已经描述,方案简单,逻辑简单,就是只管的O(n)
对比分析预测
针对首尾交换的n/2次运算(时间为T1),以及暴力法的n次运算(时间为T2),按理说执行时间应该几乎一致,也就是T1 = 1/2 * T2 ,但是由于首尾交换每次执行运算量稍多一些,所以时间应为T1 > 1/2 * T2。
下面我们实际上机验证,再次也给出一种测试算法效率的方法:
(未完待续)
【LC_Lesson1】--字符串反转练习的更多相关文章
- Java算法之字符串反转分析
本文来自http://blog.csdn.net/liuxian13183/ ,引用必须注明出处! 在基本的工作内容开发中,算法不会显得那么重要,而在百万级别的时候,差距非常大,今天带大家研究下常见的 ...
- 字符串反转----将this is good 转化为good is this 输出。
思路:现将整个字符串反转,再将每个单词反转: #include "iostream" #include "cstring" using namespace st ...
- 字符串反转C#的实现
字符串反转是面试过程中出现频率较高的算法题,今天一个牛同事让我用C#帮他实现这个算法,前提当然是不能使用类库. 例如: how are you 的反转结果为 you are how. 算法1: 是我当 ...
- 趣味算法:字符串反转的N种方法(转)
老赵在反对北大青鸟的随笔中提到了数组反转.这的确是一道非常基础的算法题,然而也是一道很不平常的算法题(也许所有的算法深究下去都会很不平常).因为我写着写着,就写出来8种方法……现在我们以字符串的反转为 ...
- Java实现字符串反转的8种方法
/** * */ package com.wsheng.aggregator.algorithm.string; import java.util.Stack; /** * 8 种字符串反转的方法, ...
- 使用SQL字符串反转函数REVERSE巧妙实现lastindexof功能
要实现一个简单的业务: 使用SQL脚本获取字符串'large/020700/61970b0101.jpg' 中的'61970b0101.jpg'部分. 先想到的是C#中的lastindexof,但是S ...
- 字符串反转实现(C++)
字符串反转 C++实现,不使用系统函数: // ReverseString.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include ...
- Java实现字符串反转
替换原则:index k 的值和 n-k 的值进行交换.(始终记住程序员的n.k都是字符串的实际位置.) 乘除的最基本实现还是来源于移位操作. public String reverse(String ...
- java几种字符串反转
java实现的字符串翻转,能想到的这几种方法 假设有其它方法,欢迎交流 //字符串反转 public class ReverseString { public String reverse1(Stri ...
随机推荐
- 推荐C++程序员阅读《CLR via C#》
这本书的作者Jeffrey Richter也是<Windows核心编程>的作者. <Windows核心编程>更多的是对window系统相关知识的挖掘积累.<CLR via ...
- java 使用反射调用可变参数方法
使用反射操作对象-调用可变参数方法 要把可变参数都当做是其对应的数组类型参数; 如 show(XX... is)作为show(XX[] is)调用; 若可变参数元素类型是引用类型: JDK内部接收到参 ...
- js基础——函数
1.函数声明:通过函数可封装任意多条语句,且可在任意地方.任何时候调用执行. eg. function box(){//无参函数 alert("只有函数被调用,我才会被执行&quo ...
- P1037 最小公倍数
题目描述 给你两个正整数A和B,求它们的最小公倍数. 输入格式 两个正整数 \(A,B(1 \le A,B \le 10^9)\) . 输出格式 一个整数,表示A和B的最小公倍数. 样例输入 6 8 ...
- testng+ant+jenkins持续集成UI自动化
一.环境搭建 1. 安装testNG插件到eclipse. -) 选择菜单 Help /Software updates / Find and Install. -) 点击add button然后在l ...
- 基于koa2操作mysql封装例子
新建better-mysql.js const mysql = require('mysql'); const config = require('../config/sqlConfig.js') l ...
- koa2+koa-art-template利用日期管道实现在jat模板中将时间戳转为日期时间
var sp = require("silly-datetime"); var render = require("koa-art-template"); va ...
- [板子]SPFA算法+链式前向星实现最短路及负权最短路
参考:https://blog.csdn.net/xunalove/article/details/70045815 有关SPFA的介绍就掠过了吧,不是很赞同一些博主说是国内某人最先提出来,Bellm ...
- 【u033】地震逃生
Time Limit: 1 second Memory Limit: 64 MB [问题描述] 汶川地震发生时,四川**中学正在上课,一看地震发生,老师们立刻带领x名学生逃跑,整个学校可以抽象地看成一 ...
- codeforces 1194F (组合数学)
Codeforces 11194F (组合数学) 传送门:https://codeforces.com/contest/1194/problem/F 题意: 你有n个事件,你需要按照1~n的顺序完成这 ...