如何进行C++字符串和数字的去重操作和鞍点的寻找
发表于:2026-11-04 作者:千家信息网编辑
千家信息网最后更新 2026年11月04日,本篇文章给大家分享的是有关如何进行C++字符串和数字的去重操作和鞍点的寻找,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。前言一串字符串或
千家信息网最后更新 2026年11月04日如何进行C++字符串和数字的去重操作和鞍点的寻找
本篇文章给大家分享的是有关如何进行C++字符串和数字的去重操作和鞍点的寻找,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。
前言
一串字符串或者一串数字的去重操作往往困扰着我们,还有鞍点的计算,也是一个令人头疼的问题,接下来,我将用标记法和数组的散列映射为大家剖析去重操作,以及鞍点的计算。
一、数字和字符串去重
1、标记法对数字去重
#includeint main(){ int n, i, j, flag = 1;//先将flag置一 int a[1000]; scanf("%d", &n); for (i = 0; i < n; i++)//写一个for循环读入数据 { scanf("%d", &a[i]); for (j = 0; j < i; j++) { if (a[i] == a[j]) { flag = 0; break; } } if (flag) printf("%d ", a[i]); flag = 1;//标记的flag重新置1,循环再次继续。 } return 0;}
2、标记法对字符串去重
标记法对字符串进行去重操作#includeint main(){ int i, j, flag=1; char s[1000]; gets(s);//直接读入字符串,包括空格 for (i = 0; i < strlen(s); i++)//直接用strlen计算输入的字符串的长度 { for (j = 0; j < i; j++) { if (s[i] == s[j])//如果有相同字符,则将标记置0,并跳出循环 { flag = 0; break; } } if (flag) printf("%c", s[i]);//因为是每个字符输出,所以是%c flag = 1; } return 0;}
去重之后的输出:

3散列映射对数字去重
#includeint main(){ int n; int a[1000], b[6000] = { 0 };//定义两个数组,第二个数组要开得比第一个数组大一些; scanf("%d", &n); for (int i = 0; i < n; i++) scanf("%d", &a[i]); for (int i = 0; i < n; i++) { b[a[i]]++;//将数组a的数当作数组b的下标,将数组b中a数组作下标的数都变1; if (b[a[i]] > 1) a[i] = -1;//若该数重复被遇到,则再加,所以但b[a[i]]>1时,说明已经遇到过一次了 } for (int i = 0; i < n; i++) if (a[i] != -1) printf("%d ", a[i]); return 0;}
4、(1)散列映射对字符串去重
#include#include int main(){ int i, j=0; char a[1000], b[6000] = { 0 }; gets(a);//直接读入字符串,包括空格 for (i = 0; i < strlen(a); i++)//直接用strlen计算输入的字符串的长度 { b[a[i]]++; if (b[a[i]] > 1) a[i] = -1; //若该数重复被遇到,则再加,所以但b[a[i]] > 1时,说明已经遇到过一次了 } for (i = 0; i < strlen(a); i++) { if(a[i] !=-1) printf("%c", a[i]); } return 0;}
(2)散列映射对字符串去重(更好理解的版本)
#includeint main(){ char s1[400],s2[400]; int a = 0,b=0; int arr[300] = {0}; gets(s1); for (int i = 0; s1[i]; i++) a++;//计算s1的元素个数 for (int i = a; i >=0; i--) { arr[s1[i]]++;将s1的数组内的元素当下标 if (arr[s1[i]] == 1)//如果arr数组的元素=1,则将s1的元素存到s2 { s2[b] = s1[i]; b++;计算数组s2的个数 } } for (int i = b - 1; i >= 0; i--) printf("%c", s2[i]); return 0;}
二、鞍点的计算

什么是鞍点:有1个n×n的矩阵,从左上到右下称为主斜线(倾角135º),从右上到左下称为次斜线(倾角45º),在主斜线上最大,次斜线上最小的元素称为该矩阵的斜线鞍点。
#includeint a[100][100];int main(){ int p[200], q[200];//p主大,q主小 int n, i, m,j,s; scanf("%d", &n); for (i = 0; i < n; i++) for (j = 0; j < n; j++) scanf("%d", &a[i][j]); for (i = 0; i < 2 * n - 1; i++)//线条数 { p[i] = 0x80000000;//最小整数 q[i] = 0x7fffffff;//最大整数 } for (i = 0; i < n; i++) for (j = 0; j < n; j++) { if (a[i][j] > p[n + i - j - 1]) p[n + i - j - 1] = a[i][j];//找主斜线的最大值 if (a[i][j] < q[i + j]) q[i + j] = a[i][j];//找次斜线最小值 } s = 0; for (i = 0; i < n; i++) { for (j = 0; j < n; j++) { if (a[i][j] == p[n + i - j - 1] && a[i][j] == q[i + j]) s += a[i][j]; } }printf("%d", s); return 0;}
以上就是如何进行C++字符串和数字的去重操作和鞍点的寻找,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注行业资讯频道。
字符
字符串
斜线
数字
数组
标记
元素
j++
最大
最小
个数
循环
C++
倾角
整数
更多
知识
矩阵
空格
篇文章
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
互联网科技会
互联网 科技公司
北京互联网科技有限公司
期待互联网科技
互联网科技公司怎么样
汇久创客互联网科技
港股科技和互联网
昊天互联网科技有限公司
赶超互联网科技 微信多开
科技类公司包括互联网吗
允成互联网科技有限公司融资
佛山市拉法互联网科技有限公司
华中科技大学互联网的牛人
互联网科技年终奖
西安有哪些互联网高科技企业
云南互联网科技学费
互联网领先科技活动
互联网科技职业技能培训学校
杭州融税互联网科技有限公司
互联网科技品牌
科技制造互联网公司
奇酷互联网络科技
广州紫鲸互联网科技
科技类的互联网平台
剑昆互联网络科技有限公司临桂
智腾互联网科技有限公司
未来五年的互联网科技
浙南科技城互联网大厦建设工程
上海钢联属于互联网科技股吗
电子商务与互联网科技的关系