zoukankan      html  css  js  c++  java
  • C++ primer 练习9.49

       如果一个字母延伸到中线之上,如d或f,则称其有上出头部分。如果一个字母延伸到中线之下,如p或g,

    则称其有下出头部分。编写程序,读入一个单词,输出最长的即不包含上出头部分,也不包含下出头部分单

    词。

    // 9_49.cpp : 定义控制台应用程序的入口点。
    //
    
    #include "stdafx.h"
    #include<string>
    #include<iostream>
    using namespace std;
    
    string& func(string &str)
    {
        string ascenderAndDescender = "bdfghjklpqty";//把上出头部分和下出头部分的字母包含进来
        static string maxLengthStr = "";             //用来储存最长的要求字符串
        int pos = 0,posAAD=0;                        //pos用来表示所要求字符的位置,posADD用来表示上出头或者下出头字符的位置
        while ((pos = str.find_first_not_of(ascenderAndDescender, posAAD)) != str.npos)//求第一个所要求字符的位置
        {
            if ((posAAD = str.find_first_of(ascenderAndDescender, pos)) != str.npos&&maxLengthStr.size() < (posAAD - pos))
            {                                                            //求第一个上出头或者下出头字符的位置
                maxLengthStr = string(str,pos,posAAD-pos);               //如果新的所要求的字符串长度教大,赋予它新值
            }
        }
        if (pos = str.find_last_not_of(ascenderAndDescender,0) && maxLengthStr.size() < (str.length() - pos))
            maxLengthStr = string(str,pos);                              //这是为了检验有可能在最后的情况
        return maxLengthStr;
    }
    
    int main()
    {
        string str = "asaaaaaaashgasjgpdhgasjqwghnaanbmnna";
        cout << func(str) << endl;
        return 0;
    }

    // 9_49.cpp : 定义控制台应用程序的入口点。//
    #include "stdafx.h"#include<string>#include<iostream>using namespace std;
    string& func(string &str){string ascenderAndDescender = "bdfghjklpqty";//把上出头部分和下出头部分的字母包含进来static string maxLengthStr = "";             //用来储存最长的要求字符串int pos = 0,posAAD=0;                        //pos用来表示所要求字符的位置,posADD用来表示上出头或者下出头字符的位置while ((pos = str.find_first_not_of(ascenderAndDescender, posAAD)) != str.npos)//求第一个所要求字符的位置{if ((posAAD = str.find_first_of(ascenderAndDescender, pos)) != str.npos&&maxLengthStr.size() < (posAAD - pos)){                                                            //求第一个上出头或者下出头字符的位置maxLengthStr = string(str,pos,posAAD-pos);               //如果新的所要求的字符串长度教大,赋予它新值}}if (pos = str.find_last_not_of(ascenderAndDescender,0) && maxLengthStr.size() < (str.length() - pos))maxLengthStr = string(str,pos);                              //这是为了检验有可能在最后的情况return maxLengthStr;}
    int main(){string str = "asaaaaaaashgasjgpdhgasjqwghnaanbmnna";cout << func(str) << endl;    return 0;}

  • 相关阅读:
    Java多线程之JUC包:ReentrantLock源码学习笔记
    Java多线程之JUC包:Semaphore源码学习笔记
    Java多线程之JUC包:CountDownLatch源码学习笔记
    Java多线程之JUC包:AbstractQueuedSynchronizer(AQS)源码学习笔记
    Java多线程之JUC包:CyclicBarrier源码学习笔记
    架构设计:企业总体架构要如何做?小白也能快速领悟的设计思想
    可参考才是有价值的,架构设计的技改之路从来都不容易
    架构设计:高并发读取,高并发写入,并发设计规划落地方案思考
    微服务手册:API接口9个生命节点,构建全生命周期管理
    百度api使用心得体会
  • 原文地址:https://www.cnblogs.com/csudanli/p/5338272.html
Copyright © 2011-2022 走看看