数据结构回文数c语言,数据结构算法(字符串转整数和回文数)

数据结构算法(字符串转整数和回文数)

2020年08月17日

| 萬仟网IT编程

 | a48e1d17a2b0511faa7da7240b1971f6.png我要评论

08字符串转整数题目描述:分析:本题主要是字符串的处理。需要注意以下几点:去除字符前的空字符第一个有效字符必须是符号或者数字只能有一个符号注意数值越界所以在具体处理的时候,你可以截取一个字符然后直接转成一个数字类型(考虑越界)但是并不推荐。这里个人使用遍历字符串数字字符时候将其与'0'字符差转换成数字进行计算,当超出int范围直接停止。通过代码为:public static int myAtoi(String str) {int zheng = 1;int ind

维护公众号:bigsai ,点赞再看,养成习惯!

08字符串转整数

题目描述:

e8768f7df5553a55e8c4f4b068773668.png

19f3f1b5fcb0aa4420b91834927b76a5.png

68a7d0efd7ac30c34e77f8d963a5809f.png

分析:

本题主要是字符串的处理。需要注意以下几点:

去除字符前的空字符

第一个有效字符必须是符号或者数字

只能有一个符号

注意数值越界

所以在具体处理的时候,你可以截取一个字符然后直接转成一个数字类型(考虑越界)但是并不推荐。这里个人使用遍历字符串数字字符时候将其与'0'字符差转换成数字进行计算,当超出int范围直接停止。

通过代码为:

public static int myAtoi(String str) { int zheng = 1; int index=0; long value=0; while (indexstr.length()-1)return 0; if(str.charAt(index)=='+') {index++;} else if (str.charAt(index)=='-') { zheng=-1;index++; } for(int j=index;j='0'&&str.charAt(j)<='9') { value=value*10+str.charAt(j)-'0'; if(value*zheng>Integer.MAX_VALUE)return Integer.MAX_VALUE; if(value*zheng

09回文数

描述:

回文数

判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。

示例 1:

输入: 121

输出: true

示例 2:

输入: -121

输出: false

解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。

示例 3:

输入: 10

输出: false

解释: 从右向左读, 为 01 。因此它不是一个回文数。

分析:

此题比较简单,需要考虑以下几点:

不能是负数,负数不满足回文数的要求

考虑奇数偶数长度数字会文性

提供两种方法:第一种将数字转成字符串,从中间向两侧拓展比较。

b065853ab4ea7f2ec23731d4530afdc6.png

实现代码为:

//11% public boolean isPalindrome(int x) { if(x<0)return false; String va=x+""; int left=0,right=0; if(va.length()%2==0) { left=va.length()/2-1;right=left+1; } else { left=va.length()/2;right=left; } while (left>=0) { if(va.charAt(left)!=va.charAt(right)) return false; left--;right++; } return true; }

但很遗憾这种方法效率比较低只能打败11%的人呢,大概18ms左右。

但是可以换一种思路,使用字符串比较效率较低。可以使用数字类型计算一遍得到逆向数值然后进行比较最终值是否相同:

74c43a6b4dea5b5376c089a68570d57e.png

public boolean isPalindrome(int x) { if(x<0)return false; int team=x; int va=0; while (x>0) { va=va*10+x%10; x/=10; } if(va==team)return true; return false; }

这样就大概9-10ms左右,9ms大概打败98%而10ms只40%多。

1b435c34cedfe03bf7abc6c482be566f.png

最后

本周打开结束,本周打开题解为:

本文地址:https://blog.csdn.net/qq_40693171/article/details/108034978

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。

如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

相关文章:

思路这个题是最长上升子序列的变形版本,要保证严格递增,需要满足a[j]−a[i]>j−ia[j]-a[i]...

10.1

#include

#include

#include

#include

using namespace std;...

背景:在原有的项目GCC编译环境下(arm-linux 32位),增加x86-linux 64位的编译环境,编译curl库的时候发生错误。 其他:编...

1、C++ STL中std::accumulate()、std::begin()和std::end() accumulate定义在#include&...

问题1:若类B以private的方式继承类A,但还想让类A的某些个别成员,保持public或者protected的访问属性,这时应该怎么办? 使用u...

gif;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVQImWNgYGBgAAAABQABh6FO1AAAAABJRU5ErkJggg

1. 什么是模板?

模板是c++支持参数化多态的工具,使用模板可以使用户为类或者函数声明一种一般模式,使得类中的某些数据成员或者成员函数的参数返回值取得任意类...

7. Reverse Integer 简单,但有一些注意点 C++ 不管正数还是负数 除法都是向0取整的: 10/4=2, 10/(-4)=-2 负...

本文是flutter中canvas和custompaint api的使用实例。首先看一下我们要实现的效果:结合动图演示,列出最终目标如下: 在程序运行后,显示...

vector::erase

C++ vector的元素删除,源码是这样的:

template

网友评论

387afa1e91d68b43eca6c11dc07bf577.gif

验证码:

653708.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值