目标
这是一个简单的挑战。您的目标是通过将每个字母与相同大小写的下一个字母交换来对字符串进行加扰,同时保持非字母字符不变。
逐步说明
第一个字符是
E
。我们寻找大写的下一个字母:这是一个C
。我们交换了这些字符,从而导致CdoE!
。我们前进到下一个字符:这是一个
d
。我们寻找小写的下一个字母:这是一个o
。我们交换了这些字符,从而导致CodE!
。我们前进到下一个字符:这就是
d
我们刚刚移到此处的字符。我们将其忽略,因为它已被处理。我们前进到下一个字符:这是
E
在步骤#1中移到的字符。我们将其忽略,因为它已被处理。我们前进到下一个字符:这是一个
!
。我们忽略它,因为它不是字母。
规则
您可以假设输入字符串仅由可打印的ASCII字符组成,范围为32-126。
您可以编写完整的程序或函数,以打印或返回结果。
如果输入字符串包含奇数个字母,则无论大小写如何,最后一个剩余的字母都不能与另一个字母互换,并且应保留在原位。如果字符串包含偶数个字母,但奇数个大写字母和奇数个小写字母,则适用相同的逻辑。
这是代码高尔夫球,因此最短的答案以字节为单位。禁止出现标准漏洞。
测试用例
Input : lLEhW OroLd!
Output: hELlO WorLd!
Input : rpGOZmaimgn uplRzse naC DEoO LdGf
Output: prOGRamming puzZles anD COdE GoLf
Input : eIt uqHKC RBWOO xNf ujPMO SzRE HTL EOvd yAg
Output: tHe quICK BROWN fOx juMPS OvER THE LAzy dOg
Input : NraWgCi: Nsas-eNEiTIsev rNsiTG!!
Output: WarNiNg: Case-sENsITive sTriNG!!
不太随机的测试用例:
Input : (^_^)
Output: (^_^)
Input : AWCTY HUOS RETP
Output: WATCH YOUR STEP
Input : hwn oeesd acsp nawyya
Output: who needs caps anyway
Input : SpMycaeIesKyBorekn
Output: MySpaceKeyIsBroken
Input : D's mroyr, Ivam. I'e faardi I act'n od htta.
Output: I'm sorry, Dave. I'm afraid I can't do that.