背景
我目前正在参加AP Comp Sci A:Java课程,并且想结识一些打高尔夫球的朋友。我在课程中遇到了挑战,我想看看社区可以在其中挑战多少字节。
挑战详情:
给定两个输入字符串,即主字符串和枢轴字符串,请执行以下操作:
如果枢轴字符串恰好是主字符串的子字符串一次,则主字符串中位于枢轴字符串之前的部分应与之后的部分交换,同时保留要交换的子字符串中的顺序。
例如:
如果转角字符串为空或枢轴字符串不是主字符串中发现,该方案不必有定义的行为。
如果枢轴字符串的实例不止一个,则拆分应在枢轴的第一个实例和仅第一个实例处进行。
示例:给定主字符串OneTwoThreeTwoOne
和数据透视字符串Two
,输出应为ThreeTwoOneTwoOne
。
给定主字符串1Two2Two3Two4
和枢轴Two
,输出应为2Two3Two4Two1
。
给定主字符串OneTwoThree
和枢轴字符串“ Two”,输出应为ThreeTwoOne
。给定主弦the rabbit is faster than the turtle
和枢轴弦
is faster than
(请注意尾随空格),输出应为the turtle is faster than the rabbit
。
给定主字符串1-2-3-4-5-6
和枢轴-
,输出应为2-3-4-5-6-1
。
后记:
这是我对代码高尔夫的第一个问题,因此,如果您有任何建议或建设性的批评,请随意发表。
另外,可以在下面找到我用于该项目的代码(使用Java编写,因为本课程着重于此)。如果您有任何提示,我很乐意看到它们。它目前的363字节,但我敢打赌,你们可以提出更好,更小的解决方案。
import java.util.Scanner;interface Main{static<T>void D(T f){System.out.println(f);}static void main(String[]A){Scanner s=new Scanner(System.in);D("Enter the first String:");String a=s.nextLine();D("Enter the pivot String:");String p=s.nextLine();if(p.isEmpty()|!a.contains(p)){D("Error: Pivot String not found.");return;}String w[]=a.split(p,2);D(w[1]+p+w[0]);}}
注意:对于原始分配,输入文本和未找到枢轴字符串的情况对于原始分配是必需的,但对于此挑战则不是必需的。
2-3-4-5-6-1
。
pivot='-'
和的预期输出是main='1-2-3-4-5-6'
什么?2-3-4-5-6-1
为此,大多数提交的结果都可以输出,但据我了解,这应该是一个挑战2-1-3-4-5-6
。