从一个表达式字符串中找到最深层圆括号内的表达式

编程实现:从一个表达式字符串中找到最深层圆括号内的表达式。

如:从表达式 x+(y*z)+(m-(3+4)) 中找到3+4 。如果由多个表达式具有相同的最深深度则只需要给出其中一个。
备注:算数表达式本身都是正确的,不要考虑括号不配对等错误表达式的处理。

/*
 * 编程实现,从一个表达式字符串中找到最深层圆括号内的表达式.
 * 如: 从表达式 x+(y*z)+(m-(3+4))中找到3+4. 如果由多个表达式具有相同的最深深度则只需要给出其中一个.
 * 备注: 算数表达式本身都是正确的,不要考虑括号不配对等错误表达式的处理
 *
 */

#include <stdio.h>
#include <string.h>

int main(void)
{
    char s[101];
    scanf("%s",s);
    int i;
    int left = 0, right = 0;
    int cur = 0, max = 0;
    int len = strlen(s);

for( i=0; i<=len; i++ )
    {
        if(s[i] == ‘(‘)
        {
            ++cur; // 第cur层嵌套的()
            if(cur>max) // 在left处更新最深层嵌套的( 位置
            {
                left = i;
                right = 0;  // 设right为0, 以控制仅仅记录最深层嵌套的) 位置
                max = cur;
            }
        }
        else if(s[i] == ‘)‘)
        {
            if(right==0) // 匹配到),将当前最深层嵌套的) 位置存放在right处; 仅记录最深层嵌套)的位置,其他的) 的位置不记录
            {
                right = i;
                cur = 0; // 清空当前嵌套层数的计数
            }
        }
    }
    for(i=left+1; i<=right-1; i++) // 输出结果
        putchar(s[i]);
    printf("\n");

return 0;
}

从一个表达式字符串中找到最深层圆括号内的表达式

时间: 2024-11-06 03:32:09

从一个表达式字符串中找到最深层圆括号内的表达式的相关文章

微软算法100题17 字符串中找到第一个只出现一次的字符

第17 题:题目:在一个字符串中找到第一个只出现一次的字符.如输入abaccdeff,则输出b 思路:要找出只出现一次的字符,很明显需要统计所有字符出现的次数,然后找出次数为一的那一个,统计次数最先想到的是hashTable,但此题有更好的办法,因为每个char其实对应一个唯一的ASCII值,所以可以构造一个包含所有字符ASCII值的int数组,来映射字符与出现次数的关系,同时一个char是8个字节,总共有256个可能,所以该数组的大小应为256 1 package com.rui.micros

在字符串中找到全部是由指定的字符组成的最长子串

/* *!============================================================== *! FNAME: search.cpp *! BRIEF: *! AUTHR: RollStone *! EMAIL: [email protected] *! VERNO: 1.0.31 *! CREAT: 2015-04-28 23:43:04 *! CHGON: 2015-04-30 07:53:00 *! *! Copyright (c) 2015 A

17.在一个字符串中找到第一个只出现一次的字符。如输入abaccdeff,则输出b

转载请注明出处:http://www.cnblogs.com/wuzetiandaren/p/4261992.html 声明:现大部分文章为寻找问题时在网上相互转载,此博是为自己做个记录记录,方便自己也方便有类似问题的朋友,本文的思想也许有所借鉴,但源码均为本人实现,如有侵权,请发邮件表明文章和原出处地址,我一定在文章中注明.谢谢. 题目:在一个字符串中找到第一个只出现一次的字符.如输入abaccdeff,则输出b . 题目分析: 求字符串的某个字符出现的次数可以很巧妙的运用split("字符&

在一个字符串中找到第一个仅仅出现一次的字符

Google 2006年的一道笔试题,难度系数低 题目描写叙述: 在一个字符串中找到第一个仅仅出现一次的字符.如输入abaccdeff,则输出b. 逻辑分析: 1.简单粗暴O(n^2),一个显而易见的想法是像冒泡排序一样,採用两个循环,内层循环对外层判定元素arr[i]进行轮询,当发现arr[i] == arr[j]时,本次循环终止,显然,时间复杂度O(n^2),不使用额外空间. #include <stdio.h> #include <stdlib.h> #include <

在一个字符串中找到第一个只出现一次的字符

题目:在一个字符串中找到第一个只出现一次的字符. 例如: 输入abaccdeff,则输出b 思路剖析: 由于题目与字符出现的次数相关,可以统计每个字符在该字符串中出现的次数. 要达到这个目的,需要一个数据容器来存放每个字符出现的次数. 在这个数据容器中可以根据字符来查找它出现的次数.在常用的数据容器中,哈希表正是这个用途. 由于字符是一个长度为8的数据类型,因此总共有256种可能.于是我们创建一个长度为256的数组,每个字母根据其ASCII码值作为数组的下标对应数组的对应项.而数组中存储的是每个

【编程题目】在一个字符串中找到第一个只出现一次的字符。如输入 abaccdeff,则输出 b。

第 17 题(字符串):题目:在一个字符串中找到第一个只出现一次的字符.如输入 abaccdeff,则输出 b. 思路:此题非常容易. 最开始是想开辟一块空间存储每个字符出现的次数. 但转念一想,似乎没有必要. 对每一个字符,都依次和后面的比较,若出现了两次,则检查下一个字符,遇到只出现一次的,直接输出就好了. /* 第 17 题(字符串): 题目:在一个字符串中找到第一个只出现一次的字符.如输入 abaccdeff,则输出 b. 分析:这道题是 2006 年 google 的一道笔试题. */

在一个字符串中找到第一个只出现一次的字符。

题目:在一个字符串中找到第一个只出现一次的字符.如输入abaccdeff,则输出b. 分析:这道题是2006年google的一道笔试题. 下面给我的解法,采用linkedhashmap的有序,即可实现 private void getOne(String str){ LinkedHashMap<String, Object> linked=new LinkedHashMap<String, Object>(); for (char charstr : str.toCharArray

Excel-判断一个文本字符串中是否包含数字! 判断一个文本字符串是否是纯汉字!

0.判断一个文本字符串中是否包含数字!/判断一个文本字符串是否是纯汉字! 公式=IF(LENB(A1)=2*LEN(A1),”都是汉字“,“含有非汉字字符”) 解释函数: LEN(A1)#返回文本字符串中的字符个数:  ##双字字符*1*双字节字符个数+单字节字符*1*单字节字符个<=>计算字符个数: LENB(A1)#返回文本字符串中的字符个数.与双字节字符集(DBCS)一起使用.##双字节字符*2*双字节字符个数+单字节字符*1*单字节字符个数<=>计算字节个数: 字符:分为双

一个字符串中找到第一个只出现一次的字符

题目描述: 在一个字符串(1<=字符串长度<=10000,全部由大写字母组成)中找到第一个只出现一次的字符. 如输入 abaccdeff,则输出 b. 输入: 输入有多组数据每一组输入一个字符串. 输出: 输出第一个只出现一次的字符下标,没有只出现一次的字符则输出-1 我们这里有两种解题思路 1.蛮力法. 遍历数组,每找到一个字符是遍历一下整个数组,看看该字符是否存在数组下表不一致,但是ASSIC码值一样的字符还存在,如果不存在,则是返回该字符,如果存在,则继续遍历.该算法的时间复杂度为O(n