-
我在 Java 里用 == 比较两个字符串是否相等,测试时一直好好的,可一接上用户真实输入就时灵时不灵、明明看着一模一样却判为不等,排查半天发现 == 比的根本不是内容、而字符串常量池给我演了一出好戏的深度复盘
我有段 Java 代码要判断字符串是不是等于某个值(用户输入是不是 yes、状态码是不是 OK),图顺手直接写了 if (str == "yes")。自己测试时一直工作得很好,我便心安理得用了下去。可一接上真实场景就诡异:同样是 yes 有时判相等有时判不等,两个字符串打印出来一模一样 == 却咬定不相等;更抓狂的是毫无规律,硬编码测永远没问题,可一旦字符串是从用户输入、网络文…- 2
- 0
-
一段在循环里用 += 拼接字符串的导出代码,数据量一大就慢得像卡死,因为 string 不可变让每次拼接都复制了一整遍:一次字符串拼接性能的深度复盘
导出几万行数据,循环里 result += 拼接,数据少时没事、几万行就慢得像卡死、CPU 飙高,profiler 显示时间全耗在那行 += 上。根因是 C# 的 string 不可变:result += x 不是追加,而是创建一个新字符串、把 result 已有的全部内容加 x 复制进去,第 n 次要复制约 n 个字符,n 次累计约 n²/2 即 O(n²)。本文讲透 string 不可变与循环…- 2
- 0
-
字符串算法完全指南:从 KMP 到 Manacher 与后缀数组
字符串算法是程序员经常碰到的领域 —— 文本搜索、模糊匹配、拼写检查、DNA 序列分析。但很多人对它的认识停留在 indexOf。真正的字符串算法精彩得多:KMP 让你跳过重复匹配,Manacher 在 O(n) 求最长回文,后缀数组让任意子串查询 O(log n)。这篇文章把核心字符串算法讲透。 朴素字符串匹配 找 pattern 在 text 中的位置。最朴素:逐位置尝试。 function …- 0
- 0
字符串
幸运之星正在降临...
点击领取今天的签到奖励!
恭喜!您今天获得了{{mission.data.mission.credit}}积分
我的优惠劵
-
¥优惠劵使用时效:无法使用使用时效:
之前
使用时效:永久有效优惠劵ID:×
没有优惠劵可用!



