入门客AI创业平台(我带你入门,你带我飞行)
博文笔记

【PHP】算法基础-字符移位

创建时间:2017-09-09 投稿人: 浏览次数:769

小Q最近遇到了一个难题:把一个字符串的大写字母放到字符串的后面,各个字符的相对位置不变,且不能申请额外的空间。

你能帮帮小Q吗?

输入数据有多组,每组包含一个字符串s,且保证:1<=s.length<=1000.

对于每组数据,输出移位后的字符串。

输入

AkleBiCeilD

输出

kleieilABCD

这道题,不能申请额外的空间,就是在原有字符串上操作,还得保证各个字符串的相对位置,利用冒泡排序的思想是最容易想到的处理方法。

<?php
while($str = trim(fgets(STDIN))){
    for($i = 0; $i < strlen($str); $i++){
        $flag = true;
        for($j = 0; $j < strlen($str)-1; $j++){
        //如果,当前位置为一个大写字母,并且其后面一位不是大写字母,则交换这两个数的位置,否则不交换
            if($str[$j]>="A" && $str[$j]<="Z" && ($str[$j+1]>"Z" || $str[$j+1]<"A")){
                $temp = $str[$j];
                $str[$j] = $str[$j+1];
                $str[$j+1] = $temp;
                $flag = false;
            }
        }
        if($flag){//如果一轮循环下来,没有发生交换,则说明都已经交换完毕,退出循环输出结果即可
            break;
        }
    }
    echo $str.PHP_EOL;
}

有木有和冒泡排序很像,哈哈!

声明:该文观点仅代表作者本人,入门客AI创业平台信息发布平台仅提供信息存储空间服务,如有疑问请联系rumenke@qq.com。