数据结构算法(字符串转整数和回文数)
08月17日
|萬仟网IT编程
|我要评论
08字符串转整数题目描述:分析:本题主要是字符串的处理。需要注意以下几点:去除字符前的空字符第一个有效字符必须是符号或者数字只能有一个符号注意数值越界所以在具体处理的时候,你可以截取一个字符然后直接转成一个数字类型(考虑越界)但是并不推荐。这里个人使用遍历字符串数字字符时候将其与'0'字符差转换成数字进行计算,当超出int范围直接停止。通过代码为:public static int myAtoi(String str) {int zheng = 1;int ind
维护公众号:bigsai ,点赞再看,养成习惯!
08字符串转整数
题目描述:
分析:
本题主要是字符串的处理。需要注意以下几点:
去除字符前的空字符
第一个有效字符必须是符号或者数字
只能有一个符号
注意数值越界
所以在具体处理的时候,你可以截取一个字符然后直接转成一个数字类型(考虑越界)但是并不推荐。这里个人使用遍历字符串数字字符时候将其与'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 。因此它不是一个回文数。
分析:
此题比较简单,需要考虑以下几点:
不能是负数,负数不满足回文数的要求
考虑奇数偶数长度数字会文性
提供两种方法:第一种将数字转成字符串,从中间向两侧拓展比较。
实现代码为:
//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左右。
但是可以换一种思路,使用字符串比较效率较低。可以使用数字类型计算一遍得到逆向数值然后进行比较最终值是否相同:
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%多。
最后
本周打开结束,本周打开题解为:
本文地址:/qq_40693171/article/details/108034978
版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@ 举报,一经查实将立刻删除。
相关文章:
思路这个题是最长上升子序列的变形版本,要保证严格递增,需要满足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...
1. 什么是模板?
模板是c++支持参数化多态的工具,使用模板可以使用户为类或者函数声明一种一般模式,使得类中的某些数据成员或者成员函数的参数返回值取得任意类...
7. Reverse Integer 简单,但有一些注意点 C++ 不管正数还是负数 除法都是向0取整的: 10/4=2, 10/(-4)=-2 负...
本文是flutter中canvas和custompaint api的使用实例。首先看一下我们要实现的效果:结合动图演示,列出最终目标如下: 在程序运行后,显示...
vector::erase
C++ vector的元素删除,源码是这样的:
template
网友评论
验证码: