1. 首先写了一个字符串转整形的算法:

   public static class String2Int1 implements String2Int {
@Override
public int string2int(String str) {
int value = 0;
int pow10 = 1;
for (int j = str.length() - 1; j >= 0; --j) {
char charValue = str.charAt(j);
if (charValue == '-' && j == 0) {
value = -value;
break;
}
if (charValue == '+' && j == 0) {
break;
}
value = value + (charValue - '0') * pow10;
pow10 = pow10 * 10;
}
return value;
}
}

打印时间:

1the time is 3143, strValue = -1001213121

2. 测试了Android SDK的算法:

  public static class String2Int2 implements String2Int {
@Override
public int string2int(String str) {
return Integer.valueOf(str);
}
}

打印时间:

1the time is 7980, strValue = -1001213121

Android SDK 算法比自己实现的算法慢了一倍。但是,自己实现的算法可不可以改进呢。

3. 改进的算法:从左向右怎么样呢,是不是可以快速一点:

    public static class String2Int2 implements String2Int {
@Override
public int string2int(String str) {
int result = 0;
boolean negative = false;
int i = 0, len = str.length();
int digit;
char firstChar = str.charAt(0);
if (firstChar < '0') { // Possible leading "+" or "-"
if (firstChar == '-') {
negative = true;
}
i++;
}
while (i < len) {
digit = str.charAt(i++) - '0';
result *= 10;
result += digit;
}
return negative ? -result : result;
}
}

打印时间:

1the time is 2774, strValue = -1001213121

总结

由此可见。最后一个算法减少了乘法运算的次数,因此速度要快一点。

如果您看了有收获,那么下载一个APl软件支持一下博主吧!还可以解决您的密码太多记不住的烦恼哦。

源码下载链接:

http://a.app.qq.com/o/simple.jsp?pkgname=com.wa505.kf.epassword

[置顶] Android面试题目之三: 字符串转整形相关推荐

  1. [置顶] Android面试题目之二:整形转换为字符串

    整形转换为字符串,写了五种算法,并进行了性能分析: 1. 算法: 直接先求得长度,然后从左向右求得各位的大小 private static class Int2String1 implements I ...

  2. [置顶] Android面试题目之四: 归并排序

    归并的核心思想是归并.归并的速度直接影响到算法的快慢. 1. 简单插入归并 public static class MergeSorter1 implements Sorter { public vo ...

  3. Android面试题目之三: 字符串转整形

    1. 首先写了一个字符串转整形的算法: public static class String2Int1 implements String2Int {@Overridepublic int strin ...

  4. Android面试题目之二:整形转换为字符串

    整形转换为字符串,写了五种算法,并进行了性能分析: 1. 算法: 直接先求得长度,然后从左向右求得各位的大小 private static class Int2String1 implements I ...

  5. 应该是史上最全最新Java和Android面试题目(自己总结和收集的)

    Android面试题目 Java 基础 int占用几个字节 讲一下常见编码方式? UTF-8编码下中文占几个字节 int和Interger的区别 int.char.long各占多少字节数 string ...

  6. 一个BAT大厂面试者整理的Android面试题目!

    身边好多朋友都裸辞了,出去旅游了一圈之后,回来才发现,工作并没有想象中那么好找.朋友小A一心只想进大厂面试Android,于是面试了阿里巴巴.美团.滴滴等,最后在某个大厂经历了5轮面试后拿到了offe ...

  7. 某通信公司的Android面试题目

    某通信公司的Android面试题目 今天的面试感觉做的不是很好,有些知识点明显没有掌握好,现在抽空把面试题目抄下来,同时努力掌握好对应的知识点. stack和heap有什么区别? heap是堆,sta ...

  8. android listview标题置顶,Android仿QQ左滑删除置顶ListView操作

    最近闲来无事,于是研究了一下qq的左滑删除效果,尝试着实现了一下,先上效果图: 大致思路原理: - 通过设置margin实现菜单的显示与隐藏 - 监听onTouchEvent,处理滑动事件 上代码 i ...

  9. [置顶] Android自定义控件 芝麻信用分雷达图

    [置顶] Android自定义控件 芝麻信用分雷达图 标签: android自定义雷达芝麻信用 2016-10-23 20:11  3548人阅读  评论(24)  收藏  举报   分类: 自定义控 ...

最新文章

  1. ImportError: DLL load failed: 找不到指定的模块。 TensorFlow 1.13
  2. Cnnot find System Java Compiler Ensure that you have installed a JDK
  3. matlab scatter cdata,matlab cdatamapping
  4. Android Studio开发基础之细节问题笔记
  5. 使用yum命令安装mysql_Linux Centos 下使用yum 命令安装mysql实现步骤
  6. 组合数学:容斥原理(HDU1976)
  7. 疯狂java workflow_疯狂Workflow讲义:基于Activiti的工作流应用开发 完整pdf扫描版[136MB]...
  8. iOS通过iTunes search检测版本更新,并提示用户更新!
  9. FFmpeg的H.264解码器源代码简单分析:宏块解码(Decode)部分-帧间宏块(Inter)
  10. 常用linux命令分组记录V1
  11. Atitit uuid 的概念与实现与最佳实践总结 目录 1. 概念与组成 1 1.1. 在空间(Space)与时间(Time)上的唯一性 1 1.2. UUID 1 1.3. 组成 2 1.3.1
  12. java商家查询订单功能_查询订单详情示例代码
  13. 搭建 Asp.net 云服务器
  14. 数字孪生技术在交通运输领域管理应用【案例解析】
  15. Vijos P1008 篝火晚会
  16. 【listener hangs】监听hangs,导致新的连接无法连接数据库
  17. Ubuntu16.04开机后黑屏无法进入登陆界面的解决办法
  18. 每月一书(202112):《王阳明心学》
  19. 计算机函数公式用法教程average,average函数怎么用?Excel下average函数的使用方法...
  20. TFT 屏幕的使用——ESP32学习笔记(番外)

热门文章

  1. 多显示器设置检测不到_这台显示器让我欲罢不能:华硕ROG PG279QR 电竞显示器 评测...
  2. python excel 教程推荐_python对Excel按条件进行内容补充(推荐)
  3. Iso时间转java instant,在java.util.Date和java.time.Instant之间转换古代日期时的差异
  4. Activiti工作流从入门到入土:整合spring
  5. 河北高速盘点七大假牌假证违法案例:寒冬穿大裤衩开车
  6. 第 6 章 Harddisk IO
  7. Linux 防火墙命令的操作命令CentOS
  8. 两队选手每队5人进行一对一的比赛(算法)
  9. java软件工程师成长过程的学习
  10. 【剑指Offer】面试招聘题目2:重建二叉树