当前位置: 首页 > news >正文

登陆不了建设银行网站/大型营销型网站制作

登陆不了建设银行网站,大型营销型网站制作,公司介绍页面设计,天津模板建站定制网站【笔试题目】 给定一个字符串,实现如下函数接口,删除其首部和尾部连续的空格。(注:夹在非空格字符之间的空格是合法的,不用删除。) char* delete_leading_trailing_whitespaces(char *output, const char …

【笔试题目】
给定一个字符串,实现如下函数接口,删除其首部和尾部连续的空格。(注:夹在非空格字符之间的空格是合法的,不用删除。)

    char* delete_leading_trailing_whitespaces(char *output,  const char *input);

【测试样例】

编号情况输入输出
1空字符串“”NULL
2空格字符串" "NULL
3首尾无空格“Hello World”“Hello World”
4首部有空格" Hello World"“Hello World”
5尾部有空格"Hello World "“Hello World”
6首尾有空格" Hello World "“Hello World”

【方法一】状态标记法

【基本思路】找到output的头(start)和尾(end)在input中的指针位置,然后把start到end的所有字符拷贝到output中。
此外,在遍历处理input的过程中,维护一个状态变量state,用于标记当前处理状态是否处于空格字符串状态,其定义如下:

	enum {STATE_OUT, /* 值为0,表示当前状态处于非空格字符串状态 */STATE_IN, /* 值为1,表示当前状态处于空格字符串状态 */} state;

1、找出output的头

我们知道,通过下面这个循环,可以跳过字符串首部的空格。当跳出循环时,指针指向input的第一个非空格字符。

	while (*input == ' '){input++;}

如果该非空格字符是尾零’\0’,那么表明input是空格字符串,此时output应该返回NULL;

	if (*input == '\0){output = NULL;return output;}

否则,该非空格字符就是output的首个字符。此时,设置状态变量state为STATE_OUT状态,表示当前指针处于非空格状态,并且记录下当前指针位置start。

2、循环处理剩余的部分。

当指针指向空格字符时,标记当前状态为STATE_IN状态,表示当前指针处于连续的空格状态;
当指针指向非空格状态时,状态变更为STAT_OUT状态,表示当前指针处于非连续的空格状态。
{//TODO:添加相关图片解释
}
此外,状态每次由STATE_OUT转为STATE_IN时,都需要记录当时STATE_IN状态的指针位置end,表示从该位置开始后面可能一直是空格;
而状态每次由STATE_IN转为STATE_OUT状态时,需把end指针重置为NULL,表示之前的连续空格串不是input尾部的。

4、尾部空格串的判断

随着指针位置逐步地偏移,最终到达尾零'\0'。那么怎么判断input尾部是否存在连续的空格呢?
如果此时state为STATE_IN,那就是存在的。而记录下的end指针就是output的结尾,将其赋值为'\0'就可以得出output。

5、求出output

copy区间[start,end)的字符到output中。

【测试样例4和6过程分析】

案例4和案例6分析


【方法二】

【基本思路】首先,从input的头部循环偏移到第一个非空格字符,找到output的start位置;同理,从input的尾部循环偏移到第一个非空格字符,找到output的end位置;最后,copy区间[start,end]的字符到output中。


【实现代码】

【方法一】

char* delete_leading_trailing_whitespaces(char *output,  const chat*input)
{// 定义状态变量stateenum {STATE_OUT,STATE_IN,} state = STATE_OUT;// 定义output的start和end指针char *start = NULL, *end = NULL;// 传入参数input和output检查if (!input || !output)return NULL;// 跳过input首部的连续空格while (*input == ' ')input++;// input为空格字符串if (*input == '\0')return NULL;// 记录startstart = const_cast<char*>(input++);// 处理input剩余的部分while (*input != '\0'){if ((*input == ' ')){if (state == STATE_OUT){state = STATE_IN;end = const_cast<char*>(input);}}else{end = NULL;state = STATE_OUT;}input++;}if (state == STATE_IN){printf("has trailing spaces\n");}else{end = const_cast<char*>(input);}// copy从start到end的字符for (start; start < end; start++){*output = *start;output++;}*output++ = '\0';return output;
}

【方法二】

char* delete_leading_trailing_whitespaces(char *output,  const chat*input)
{// 定义output的start和end指针char *start = input, *end = input;// 传入参数input和output检查if (!input || !output)return NULL;// 跳过input首部的连续空格while (*input == ' ')input++;// input为空格字符串if (*input == '\0')return NULL;// 记录startstart = input;// 反向处理找endwhile (*end != '\0')end++;end--;while (*end == ' ')end--;// copy从start到end的字符for (start; start <= end; start++){*output = *start;output++;}*output++ = '\0';return output;
}

【测试代码】

#include <stdio.h>
#include <stdlib.h>int main(int argc, char* argv[])
{if (argc != 2){fpritnf(stderr, "Usage: %s string\n", argv[0]);return 1;}char *output = (char*)malloc(32);delete_leading_trailing_whitespaces(output, argv[1]);printf("output = [%s]", output);return 0;
}

http://www.lbrq.cn/news/757945.html

相关文章:

  • 商城网站做推广方案/b2b自动发布信息软件
  • 设计手机网站公司/百度下载安装2019
  • 网站建设6135678/2024年的新闻
  • 深圳个性化网站建设公司电话/免费crm客户管理系统
  • 做蛋糕网站/seo搜索优化
  • 网站建设 英文版/跨境电商seo是什么意思
  • 深圳模具外贸网站建设/企业专业搜索引擎优化
  • 沧州网站制作公司/seo博客大全
  • 珠海市手机网站建设品牌/系统优化大师官方下载
  • 长沙景点排行榜/前端seo怎么优化
  • 杭州建设主管部门的网站/广州网站设计公司
  • 公司网站介绍范文/好搜网
  • 福鼎网站开发/网站建设报价
  • 做纯静态网站怎么样/立即优化在哪里
  • 济南好的seo/长沙建站优化
  • 宁波网站建设的企业/杭州seo网站排名
  • 湛江专业的免费建站/自媒体有哪些平台
  • 免费asp主机网站/综合权重查询
  • 梦幻西游源码论坛/软文优化
  • 南昌做小程序公司/seo优化资源
  • b2c网站怎么建设/马鞍山网站seo
  • 网站源码程序修改/互联网营销模式
  • 网站怎么做效果好/seo优化网络推广
  • 阜宁做网站需要多少钱/临沂百度代理公司有几个
  • 网站营销特点/百度正版下载并安装
  • 重庆网站空间费用/网络营销的优势是什么
  • 怎么做网站规划/视频号链接怎么获取
  • 宝安网站开发/郑州seo多少钱
  • 桥头网站仿做/上海建站seo
  • 网站建设还好做吗/中国外贸订单网
  • nifi 增量处理组件
  • Android RxJava变换操作符详解
  • HarmonyOS 实战:用 List 与 AlphabetIndexer 打造高效城市选择功能
  • 前瞻性技术驱动,枫清科技助力制造企业借助大模型完成生产力转化
  • k8s+isulad 重装
  • OpenCV ------图像基础处理(一)