假設(shè)給定一個(gè)由字母和小數(shù)點(diǎn)組成的字符串教届,把字符串按塊翻轉(zhuǎn)洒擦,其中連續(xù)的小數(shù)點(diǎn)為一塊掸茅,連續(xù)的字母為一塊逗鸣。例如 'ab..bc...cd.' 翻轉(zhuǎn)后為 '.cd...bc..ab'
類似還有 'I am a sudent.' 翻轉(zhuǎn)后為 'student. a am I '
php:
function change ($str) {
? ? $block = "";
? ? $new = "";
? ? $b = false;
? ? for ($i = strlen($str) - 1; $i >= 0; $i--) {
? ? ? ? if ($str[$i] == ".") {
? ? ? ? ? ? if ($b) {
? ? ? ? ? ? ? ? $new .= strrev($block);
? ? ? ? ? ? ? ? $block = "";
? ? ? ? ? ? ? ? $b = false;
? ? ? ? ? ? }
? ? ? ? ? ? $new .= ".";
? ? ? ? } else {
? ? ? ? ? ? $block .= $str[$i];
? ? ? ? ? ? $b = true;
? ? ? ? }
}
? ? if (!empty($block)) {
? ? ? ? $new .= strrev($block);
? ? }
? ? return $new;
}
go:
package main
import (
? "fmt"
)
func main() {
? str :="ab..bc...cd."
? fmt.Println(change(str))
}
func change(strstring)string {
? var newstring
? var block []rune
? var bbool
? runes := []rune(str)
? dianRune := []rune(".")
? for i :=len(runes) -1; i >=0; i-- {
? ? ? ? if runes[i] == dianRune[0] {
? ? ? ? ? ? ? if b {
? ? ? ? ? ? ? ? ? new +=strrev(block)
? ? ? ? ? ? ? ? ? block = []rune{}
? ? ? ? ? ? ? ? ? b =false
? ? ? ? ? ? ? ?}
? ? ? ? ? ? ? ?new +="."
? ? ? ?} else {
? ? ? ? ? ? ? ?block =append(block, runes[i])
? ? ? ? ? ? ? ?b =true
? ? ? ?}
? }
? if len(block) >0 {
? ? ? ? new +=strrev(block)
? ?}
? ?return new
}
func strrev(runes []rune)string {
? ? ? for from, to :=0, len(runes)-1; from < to; from, to = from+1, to-1 {
? ? ? ? ? ? ?runes[from], runes[to] = runes[to], runes[from]
? ? ? }
? ? ? return string(runes)
}