zoukankan      html  css  js  c++  java
  • 比较字符串(忽略空格,忽略大小写)

    总时间限制: 
    1000ms
     
    内存限制: 
    65536kB
    描述

    判断两个由大小写字母和空格组成的字符串在忽略大小写,且忽略空格后是否相等。

    输入
    两行,每行包含一个字符串。
    输出
    若两个字符串相等,输出YES,否则输出NO。
    样例输入
    a A bb BB ccc CCC
    Aa BBbb CCCccc
    
    样例输出
    YES
    源码如下:
    #include <iostream>
    using namespace std;
    
    bool compareTwoStringIgnoreCases(string a,string b);
    int main(){
    	char  aString[30],bString[30];
    	cout<<"input StringA:";
    	cin.getline(aString,30);
    	cout<<"input stringB:";
    	cin.getline(bString,30);
    	/*aString="a A bb BB ccc CCC";
    	bString="Aa BBbb CCCccc";*/
    
    	if(compareTwoStringIgnoreCases(aString,bString))
    		cout<<"YES";
    	else
    		cout<<"NO";
    	cout<<endl;
    	return 0;
    }
    bool compareTwoStringIgnoreCases(string a,string b){
    	int i,j;
    	for (i=0,j=0;i<a.length() && j<b.length();)
    	{
    		if (a[i]==b[j]||abs(a[i]-b[j])==32)//ascii码:大写小写差32;空格的ascii码对应十进制为32
    		{
    			i++,j++;
    		}
    		else if (a[i] == 32)
    			i++;
    		else if (b[j] == 32)
    			j++;
    		else
    			return false;
    	}
    	return true;
    }
    

      ascii码在转换大小写时,有着不容忽视的力量;同时,cin标准输入的变体也很重要:一般cin标准输入是面相单词进行读取的,在这道题中,如果使用cin来读取输入的字符串,往往不能达到预期的效果,面相单词是主要的阻碍,当cpu检测到有空格输入时,就认为是一个字符串输入的结束,对于那些字符串中包含空格的,就是一个障碍。要解决这个问题,就用到了cin标准输入的变体:cin.getline(char*arr,int size):  从arr开始最多读取size个字符,但是遇到“换行符”就认为:字符串输入结束。

      这样我们就可完成面相行的字符串读取。

  • 相关阅读:
    Manager Test and DAO
    07-图
    06-排序
    05-查找
    第04次作业-树
    第03次作业-栈和队列
    week-02 线性表
    week01—绪论
    使用promise封装el-form多个表单校验
    $slot受slot-scope影响,导致$slot中的key消失
  • 原文地址:https://www.cnblogs.com/ysugyl/p/6228999.html
Copyright © 2011-2022 走看看