【算法】 string 转 int
遇到的一道面试题, 当时只写了个思路, 现给出具体实现 ,算是一种比较笨的实现方式
public class StringToInt { /// <summary> /// 自己实现string转换成int /// </summary> /// <param name="str"></param> /// <returns></returns> public static int ToInt(string str) { if (string.IsNullOrWhiteSpace(str)) // 空字符串直接返回0 { return 0; } bool isMinus = false; // 是否是负数 int result = 0; // 返回结果 for (int i = 0; i < str.Length; i++) { int num = ToInt(str[i]); if (num == -1) // 不是数字 { return 0; } if (num == -2) // 负数的情况 { if (i == 0) // 确实是负数 { isMinus = true; } else // 字符串中间出现负号 { return 0; } } checked // 检查算术溢出 { result += ToTens(num, str.Length - i - 1); } } return isMinus ? 0 - result : result; } /// <summary> /// 将char转成int,注意-(负数),不能转的返回-1,负数返回-2 /// </summary> /// <param name="c"></param> /// <returns></returns> private static int ToInt(char c) { switch (c) { case '1': return 1; case '2': return 2; case '3': return 3; case '4': return 4; case '5': return 5; case '6': return 6; case '7': return 7; case '8': return 8; case '9': return 9; case '0': return 0; case '-': return -2; } return -1; } /// <summary> /// 根据位数获取对应的数字 /// </summary> /// <param name="i"></param> /// <param name="index"></param> /// <returns></returns> private static int ToTens(int i, int index) { if (i <= 0) { return 0; } for (int j = 0; j < index; j++) { i = i * 10; } return i; } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?