【PHP】算法基础-字符移位
小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。