计算反转次数时小心精度丢失

第一次见到官方题解是暴力法的题目……

可以理解成每隔k个字符进行一次处理。

但是需要注意类型转换,int / int的结果还是int,如果不显式转换成double会导致错误的结果。

string reverseStr(string s, int k)
{
    int length = s.length();
    int times = ceil(static_cast<double>(length) / k);
    for (int i = 0; i < times; ++i)
    {
        // 前k个
        if (i % 2 == 0)
       {
            reverse(&s[i * k], &s[i == times - 1 ? length : (i + 1) * k]);
        }
    }
    return s;
}

之所以提这个,因为之前机考的时候忘了这茬了……有点可惜。

发布了110 篇原创文章 · 获赞 132 · 访问量 5万+

猜你喜欢

转载自blog.csdn.net/HermitSun/article/details/103648646