对于这个问题,在一个串中的“一对”被定义为其中一个字符的两个实例被另一个字符分隔的情况。所以在“AxA”中,A是一对。对可以重叠,所以“AxAxA”包含三对;两个用于A和一个用于x。我怎么能指望在一个字符串的简单模式的出现的次数?
进一步的实例:
countPairs( “AXA”)→1个
countPairs( “axax”)→2个
countPairs( “axbx”)→1
我被要求如何在昨天的采访中计算给定字符串中对的数量,我不知道该怎么做。
对于这个问题,在一个串中的“一对”被定义为其中一个字符的两个实例被另一个字符分隔的情况。所以在“AxA”中,A是一对。对可以重叠,所以“AxAxA”包含三对;两个用于A和一个用于x。我怎么能指望在一个字符串的简单模式的出现的次数?
进一步的实例:
countPairs( “AXA”)→1个
countPairs( “axax”)→2个
countPairs( “axbx”)→1
我被要求如何在昨天的采访中计算给定字符串中对的数量,我不知道该怎么做。
O(n)解决方案是迭代字符串(从0到length-2
)和(使用charAt(..)
)来验证当前字符是否等于current+2
。如果是这样,递增pairsCount
变量
int pairsCount = 0;
for (int i = 0; i < str.length() - 2; i ++) {
if (str.charAt(i) == str.charAt(i + 2)) {
pairsCount ++;
}
}
以前awser不隐蔽事实,即在中间(分隔符)的卡拉科特必须是不同的。
对于这个问题,在一个串中的“一对”被定义为其中一个字符的两个实例被另一个字符分离的情况。所以在“AxA”中,A是一对。对可以重叠,所以“AxAxA”包含三对;两个用于A和一个用于x。
必须将此角色有所不同? 在这里,我虽然如果它必须是不同的...
int trueNbPair =0;
for (int i=1;i<str.length()-1;i++)
{
char prev = str.charAt(i-1);
char current = str.charAt(i);
char next = str.charAt(i+1);
if (prev == next && current!= prev)
{
trueNbPair++;
}
}
好抓。我认为AAA也被认为是一对。但它可能是相反的。 – Bozho 2011-03-22 20:40:38
太糟糕我有一些工作要做: - /。这是一个非常有趣的问题。 – helpermethod 2011-03-22 15:47:56
@Helper Method.i没有得到you.where你指指点点,我无法去解决它。 – Deepak 2011-03-22 15:54:24