• 浦发银行机试题


    1. 判断是不是IP地址
    2. 统计字符串里数字字母空格和其他字符个数四种字符统计。
    3. 整数转二进制
    #include <stdio.h>
    #include<iostream>
    using namespace std;
    int main()
    {
    	int n, a, b, c, d;
    	scanf("%d", &n);
    	while (n--){
    		scanf("%d.%d.%d.%d", &a, &b, &c, &d);
    		if (a < 0 || b < 0 || c < 0 || d < 0 || a > 255 || b > 255 || c > 255 || d > 255)
    			printf("No!
    ");
    		else
    			printf("Yes!
    ");
    	}
    	system("pause");
    	return 0;
    }
    
    
    
    #include <iostream>
    
    using namespace std;
    
    int main()
    
    {
    	
        char c;
    	
        int letters = 0, space = 0, digit = 0, others = 0;
    	
        while ((c = getchar())!= '
    ')
    
    	{
    		
            if (c >= 'a'&&c <= 'z' || c >= 'A'&&c <= 'Z')
    		
    	letters++;
    		
            else if (c == ' ')
    	
             space++;
    		
            else if (c >= '0'&&c <= '9')
    
    	 digit++;
    		
            else
    		
            others++;
    	
    printf("char=%d space=%d digit=%d others=%d
    ", letters, space, digit, others);
    	
    system("pause");
    	
    return 0;
    
    }
    
    
    
    #include <iostream> 
    using namespace std;
    int main()
    {
    	int num ;
    	cin >> num;
    	while(num)
    	{
    		cout << (num&1);
    		num = num >> 1;//把num转换成二进制表示后所有位向后移动一位,高位补0
    	}
    	cout <<endl;
    	system("pause");
    	return 0;
    }
    
    
    
    1.判断输入的字符串是否全是数字
    2.3x3矩阵转置
    3.判断字符串是否可以由其子串组成
    
    #include <iostream>
    #include <sstream> 
    using namespace std;
    bool isNum(string str)
    {
        stringstream sin(str);
        double d;
        char c;
        if (!(sin >> d))
        {
            return false;
        }
        if (sin >> c)
        {
            return false;
        }
        return true;
    }
    int main(void)
    {  
        string str1,str2;
        cin >> str1;
        if (isNum(str1))
        {
            cout << "str1 is a num" << endl;
        }
        else
        {
            cout << "str1 is not a num" << endl;
        }
        system("pause");
        return 0;
    }
    
    
    
    #include<iostream>
    using namespace std;
    int main()
    {
        int matrix[3][3];
        for (int i = 0; i < 3; i++)
        for (int j = 0; j < 3; j++)
                cin >> matrix[i][j];
     
        printf("原矩阵:
    ");
        for (int i = 0; i<3; i++){
     
            for (int j = 0; j<3; j++)
     
                cout << matrix[i][j] << " ";
     
            cout << endl;
     
        }
        printf("
    转置后矩阵:
    ");
        for (int i = 0; i<3; i++){
            for (int j = 0; j<3; j++)
                cout << matrix[j][i] << " ";
            cout << endl;
        }
        system("pause");
        return 0;
    }
    
    
    
    #include<iostream>
    #include<string>
    using namespace std;
    class Solution {
    public:
        bool repeated(string s)
        {
            int n = s.size();
            string temp1 = "";
            string temp2 = "";
            for (int i = 2; i <= n; ++i)
            {
                if (n % i == 0)
                {
                    int length = n / i;
                    temp1 = string(s.begin(), s.begin() + length);
                    for (int j = 0; j < i; ++j)
                        temp2 += temp1;
                }
                if (temp2 == s)
                    cout << temp1 << endl;
                    return true;
                 
                temp2 = "";
            }
            return false;
        }
    };
    int main()
    {
        string str;
        cin >> str;
        cout << Solution().repeated(str) << endl;
        system("pause");
        return 0;
    }
    
    
    
    
    1、给一组数,问奇数多还是偶数多
    2、一串字符,第一个出现一次的字符
    3、最长回文子串长度
    
    #include<iostream>
    #include<stdio.h>
    using namespace std;
    int WhichMore(int x[], int n)
    {
    	int j = 0, o = 0;
    	for (int i = 0; i<n; i++)
    	if (x[i] % 2 == 0)
    		o++;
    	else
    		j++;
    	return o - j;
    }
    int main()
    {
    	int x[100], i = 0, j,n;
    	cin >> n;
    	while (n--){
    		cin >> j;
    		x[i++] = j;
    	}
    	j = WhichMore(x, i);
    	if (j >= 0)
    		printf("偶数比奇数多%d个
    ", j);
    	else
    		printf("奇数比偶数多%d个
    ", -j);
    	system("pause");
    	return 0;
    }
    
    
    
    #include<stdio.h>
    
    #include<string.h>
    
    #include<iostream>
    
    int main()
    
    {
    	int n, l, sum = 0, i;
    	
    char a[100000], ch;
    	
    int sign = 1;
    	
    scanf("%d
    ", &n);
    	
    while (n--)
    	{
    		
    gets(a);
    		
    l = strlen(a);
    		
    for (ch = 'a'; ch <= 'z'; ch++)
    	
    	{
    			
    for (i = 0; i<l; i++)
    			
    {
    				
    
    if (ch == a[i])
    				
    	sum++;
    			
    }
    			
    if (sum == 1)
    		
    	{
    			
    
    	sign = 0;
    			
    	break;
    			
    }
    			
    sum = 0;  //注意,这里还要局部归零!因为下面的循环都要用sum 
    	
    	}
    		
    if (sign == 1)
    			
    printf("no
    ");
    		
    else
    			
    printf("%c
    ", ch);
    	
    	sum = 0;
    		
    sign = 1;
    	
    }
    	
    system("pause");
    	
    return 0;
    
    }
    
    
    
    #include<iostream>
    #include<vector>
    #include <algorithm>
    #include<string>
    using namespace std;
    class Solution 
    {
    public:
    	string longestPalindrome(string s)
    	{
    		if (s.length() < 0) 
    			return "";//如果长度小于0则返回空
    		int n = s.size();//获得字符串的长度
    		vector<vector<bool>> dp(n, vector<bool>(n, false));//定义bool向量
    		int maxlen = 1, start = 0;
    		for (int i = 0; i < n; i++)
    		{
    			for (int j = 0; j <= i; j++)
    			{
    				if (i - j < 2) dp[i][j] = (s[i] == s[j]);
    				else
    					dp[i][j] = (s[i] == s[j] && dp[i - 1][j + 1] == 1);
    				if (dp[i][j] && maxlen < i - j + 1)
    				{
    					maxlen = i - j + 1;
    					start = j;
    				}
    			}
    		}
    		return s.substr(start, maxlen);
    	}
    };
    int main() 
    {
    	        string line;
    		cin >> line;
    		string ret = Solution().longestPalindrome(line);
    		string out = (ret);
    		cout << out << endl;
    		system("pause");
    	        return 0;
    }
    
    
    
    1.给一个数组,一个target值,求数组中俩元素和为target的俩下标
    2.输入一个long类型数字,如365141,输出3-6-5-1-4-1
    3.百钱买百鸡的小学问题
    
    
    #include<iostream>
    #include<vector>
    #include <unordered_map>
    using namespace std;
    //构建解决方案
    class Solution {
    public:
    	vector<int> twoSum(vector<int>& nums, int target)
    	{
    		unordered_map<int, int>m;//因此遇到查找问题,常会考虑一下用unordered_map构造空的容器
    		vector<int>result;//定义输出结果向量
    		for (int i = 0; i< nums.size(); i++)///* 遍历数组 */
    		{
    			if (m.find(nums[i]) == m.end())//若这个元素在m中,则判断当前的位置i与查找到的nums[i],得到其位置
    			{
    				m[target - nums[i]] = i;
    
    			}
    			else
    			{
    				result.push_back(m[nums[i]]);//获得下标值
    				result.push_back(i);
    				break;
    			}
    		}
    		return result;
    	}
    };
    int main()
    {
    	int target;
    	vector<int>nums;
    	cin >> target;
    	int x;
    	while (cin >> x)
    	{
    		nums.push_back(x);
    		if (getchar() == '
    ') //遇回车结束
    			break;
    	}
    	vector<int> ret = Solution().twoSum(nums, target);
    	cout << ret[0]<<" " << ret[1] << endl;
    	system("pause");
    	return 0;
    }
    
    
    #include<iostream>
    #include <stdio.h>
    void main()
    {
    	long a;
    	int b[50], n, i;
    	scanf("%ld", &a);
    	i = 0;
    	while (a>9)
    	{
    		b[i] = a % 10;
    		a /= 10;
    		i++;
    	}
    	b[i] = a;
    	for (; i >= 0; i--)
    	{
    		printf("%d", b[i]);
    		if (i != 0)
    			printf("-");
    	}
    	printf("
    ");
    	system("pause");
    }
    
    
    #include<iostream>
    
    using namespace std;
    
    int main()
    {
    	int x, y, z;              //分别代表公鸡,母鸡,小鸡的数量
    	
    for (x = 0; x <= 20; x++)
    	
    {
    		
    for (y = 0; y <= 33; y++)
    	
    	{
    			
    z = 100 - x - y;
    			
    if (z % 3 == 0 && (5 * x + 3 * y + z / 3) == 100)
    	
    		{    
    				
    cout << "公鸡,母鸡,小鸡数:" << x << " " << y << " " << z << " " << endl;
    		
    	}
    	
    	}
    	
    }
    	
    system("pause");
    	
    return 0;
    
    }
    

      

  • 相关阅读:
    Go语言 函数return值的几种情况
    VSCode 常用快捷键 Mac
    Java异常处理
    Java面向对象《三》
    C++类模板
    C++函数模板
    盛最多水的容器
    实现 Trie (前缀树)
    排序链表
    类似某团app搜索城市界面中 点击右侧城市首字母,对应城市区域置顶的功能(uniapp)
  • 原文地址:https://www.cnblogs.com/277223178dudu/p/11373958.html
Copyright © 2020-2023  润新知