微众银行笔试第二题

微众银行笔试题第二题,思路是计算字符串中奇数个数的字符个数,奇数个数的字符如果有奇数个,则Cassidy赢,否则另一个人赢。ac 9%,求解答,是否思路出问题。
import java.util.*;
public class test1 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = Integer.valueOf(sc.nextLine());
        for (int i = 0; i < n; i++) {
            String s = sc.nextLine();
            int k = count(s);
             //奇数个数的字符如果有奇数个,则Cassidy赢
            if (k % 2 == 1) {
                System.out.println("Cassidy");
            } else {
                System.out.println("Eleanore");
            }
        }
    }
    public static int count(String str) {
        int l = str.length();
        int[] dict = new int[26];
        for (int i = 0; i < l; i++) {
            dict[str.charAt(i) - 'a']++;
        }
        //奇数个数的字符计数
        int count = 0;
        for (int i = 0; i < l; i++) {
            if (dict[i] % 2 == 1) {
                count++;
            }
        }
        return count;
    }

} 
#微众银行实习生招聘腾讯实习生##微众银行##笔试题目#
全部评论
我也是这个思路,也是9%... 等一个回复😂
点赞 回复 分享
发布于 2020-04-08 21:35
还有奇数个数是0,Cassidy赢。
点赞 回复 分享
发布于 2020-04-08 21:38
差不多啊思路,我ac了,你漏掉的情况是奇数个数数字有0和1个时都是Cassidy赢。
点赞 回复 分享
发布于 2020-04-08 21:49
我是我的思路,能 AC #include <iostream> #include <vector> #include <string> #include <unordered_map> using namespace std; string gameWinner( const string& str ) {     unordered_map<char, int> M;     for ( char ch : str )          ++M[ch];          // 统计「奇数」字符的个数     int oddChar = 0;     for ( auto iter = M.begin(); iter != M.end(); ++iter ) {         if ( iter->second % 2 == 1 )             ++oddChar;     }     if ( oddChar == 0 )         return "Cassidy";     else {         if ( oddChar % 2 == 1 )             return "Cassidy";         else         {             return "Eleanore";         }     } } int main() {     int n;     scanf( "%d", &n );          vector<string> vec( n );     for ( int i = 0; i < n; ++i )         cin >> vec[i];          for ( auto str : vec ) {         cout << gameWinner( str ) << endl;     }                  return 0; }
点赞 回复 分享
发布于 2020-04-08 22:19
AC代码: public static void main(String[] args) {         Scanner input = new Scanner(System.in);         int n = Integer.parseInt(input.nextLine());         for (int i = 0; i < n; i++) {             if ((input.nextLine().length() & 1) == 1) {                 System.out.println("Cassidy");                 } else {                 System.out.println("Eleanore");             }         }     }
点赞 回复 分享
发布于 2020-04-08 22:28
我一开始也是这个思路,然后过了9%,然后我随便试了下,把条件换成奇数个数的字符数是奇数的时候是Eleanore胜就A了91……然后看了一下是测试用例没过,然后n==2的时候直接输出测试答案A了,我其实到现在也是挺懵逼怎么过的……因为如果是abcde这种情况怎么想也应该是Cassidy胜才对……
点赞 回复 分享
发布于 2020-04-08 22:35
还有如果是回文。直接就是赢了啊~
点赞 回复 分享
发布于 2020-04-08 22:40
我也这个思路,然后9%。。思路肯定没问题,就是某个地方出小差错了
点赞 回复 分享
发布于 2020-04-08 22:44
for s in strs:     count = {}     ji = 0     for s1 in s:         if s1 not in count:             count[s1] = 1         else:             count[s1] += 1     for key in count:         print(key,count[key])         if count[key]%2 != 0:             ji += 1     if ji<=1:         print('Cassidy')     elif ji%2 == 0:         print('Eleanore')     else:         print('Cassidy') 同9%
点赞 回复 分享
发布于 2020-04-08 22:55
请问一下这是什么岗的题目?
点赞 回复 分享
发布于 2020-04-08 23:10
这个题...我直接把字符串长度模2...字符串长度是奇数就C赢,否则E赢...然后居然过了
点赞 回复 分享
发布于 2020-04-09 13:38
我就是 奇数和0个是A赢 其他是B赢 也只有9% 怀疑测试用例有问题 一脸懵逼
点赞 回复 分享
发布于 2020-04-21 22:10

相关推荐

10-25 00:32
香梨想要offer:感觉考研以后好好学 后面能乱杀,目前这简历有点难
点赞 评论 收藏
分享
有工作后先养猫:太好了,是超时空战警,我们有救了😋
点赞 评论 收藏
分享
11-28 17:48
中山大学 C++
点赞 评论 收藏
分享
评论
2
14
分享
牛客网
牛客企业服务